Jsf h:selectOneMenu(带转换器)中的验证错误
以下代码:Jsf h:selectOneMenu(带转换器)中的验证错误,jsf,Jsf,以下代码: <h:selectOneMenu id="discountCode" value="#{customerMBean.details.discountcode}" title="DiscountCode" required="true" requiredMessage="The DiscountCode field is required." converter="#{customerMBean.discountCodeConverter}
<h:selectOneMenu id="discountCode" value="#{customerMBean.details.discountcode}"
title="DiscountCode" required="true" requiredMessage="The DiscountCode field is required."
converter="#{customerMBean.discountCodeConverter}">
<f:selectItems value="#{customerMBean.allDiscountCodes}"/>
</h:selectOneMenu>
<h:commandButton id="back" value="Back" action="#{customerMBean.list}"/>
<h:commandButton id="update" value="Update" action="#{customerMBean.update}"/>
这是如何造成的,我如何解决它?使用标签它将显示验证错误,并在单击按钮时更新它,或者您可以使用自动更新
据我说:-
为什么按钮不工作??因为每次单击“提交”按钮时,都会显示验证错误,但您没有使用,这就是为什么它在屏幕上不可见
在后退按钮上使用immediate=true将跳过验证阶段。在
h:selectOneMenu
中使用自定义转换器时,应始终覆盖所涉及对象的equals()
方法
另请参见
public Converter getDiscountCodeConverter() {
return discountCodeConverter;
}
private Converter discountCodeConverter = new Converter() {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return new ConverterException("On verra la conversion String->Objet plus tard...");
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
DiscountCode dc = (DiscountCode) value;
return dc.getDiscountcode()+" : "+dc.getRate()+"%";
}
};