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 に答える