以下代码:
<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}"/>
无论点击的按钮如何,都会显示以下错误:
j_idt6:discountCode:验证错误。
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()+"%";
}
};
这是如何引起的?如何解决?
答案 0 :(得分:1)
在h:selectOneMenu
中使用自定义转换器时,应始终覆盖所涉及对象的equals()
方法。
另见
答案 1 :(得分:0)
使用&lt; h:消息 /&gt;标记它将显示验证错误并在单击按钮时更新它,或者您可以使用自动更新。
据我说: -
为什么你的按钮不起作用 ?? 因为每次点击提交按钮时它都会显示验证错误,但你没有使用它,这就是为什么它在你的屏幕上不可见。
在后退按钮上使用 immediate = true ,它将跳过验证阶段。