2013-01-20 91 views
0

我正在使用ICEfaces 3.2。我有一個爲特定的ace:textAreaEntry字段定義的驗證器方法。如果驗證程序中的驗證代碼失敗,我將向上下文添加面部錯誤消息。我期望當這個錯誤信息被添加到上下文中時,我的actionListener不會被執行。但是我注意到,即使在我的驗證器向上下文添加面孔錯誤信息之後,actionListener也會被執行。我認爲,因爲驗證失敗,人臉將不會執行actionlistenerJSF actionListener被調用,雖然從ace驗證失敗:textAreaEntry驗證器

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; 
    } 
    } 
} 

回答

1

驗證被認爲是唯一的失敗,如果你真的拋出一個javax.faces.validator.ValidatorException

嘗試拋出一個異常,裏面的的FacesMessage:

FacesMessage msg = new FacesMessage("my validaton message"); 
msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
throw new ValidatorException(msg); 
+0

謝謝,我不知道我應該拋出一個validatorexception。 – ZEE