私はICEfaces3.2を使用しています。ace:textAreaEntry
特定のフィールドに対して定義されたバリデーターメソッドがあります。バリデーター内の検証コードが失敗した場合、コンテキストにfacesエラーメッセージを追加しています。このエラーメッセージがコンテキストに追加されたときに、myactionListener
が実行されないことを期待していました。しかし、私が気付いたのは、バリデーターからコンテキストにfacesエラーメッセージを追加した後でも、actionListener
が実行されることです。検証に失敗したため、facesは実行されないと思いましたactionlistener
。
XHTML textareaentryコード:
<ace:textAreaEntry
id="addrincountryofincorp"
value="#{strformbean.addrInCountryOfIncorp}"
required="true" styleClass="#{facesContext.validationFailed?'ui-state-error':''}"
label="Address in Country of Incorporation" cols="50" rows="5"
validator="#{strformbean.validateAddrLen}" />
バリデーターメソッド:
public void validateAddrLen(FacesContext fc,UIComponent uc, Object obj){
int len = 0;
Map compAttr = uc.getAttributes();
log.debug("inside validateAddrLen...");
log.debug("obj = "+obj);
if(obj != null && ! obj.equals("")){
len = obj.toString().length();
if(len > 200){
Utility.addValMesgToContext(compAttr.get("label").toString() + " cannot exceed 200 Characters");
return;
}
}
}