0

以下代码:

<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()+"%";   
} 
};

这是如何引起的,我该如何解决?

4

2 回答 2

2

在 中使用自定义转换器时h:selectOneMenu,您应该始终覆盖所equals()涉及对象的方法。

也可以看看

于 2012-10-18T07:44:24.127 回答
0

使用 < h:message /> 标签它将显示验证错误并在单击按钮时更新它,或者您可以使用自动更新。

据我说: -

为什么你的按钮不起作用因为每次单击提交按钮时,它都会向您显示验证错误,但您没有使用,这就是它在屏幕上不可见的原因。

在后退按钮上使用immediate=true它将跳过验证阶段。

于 2012-10-18T07:43:51.520 回答