【问题标题】:JSF actionListener gets called although validationFailed from ace:textAreaEntry validator尽管来自 ace:textAreaEntry 验证器的验证失败,但 JSF actionListener 被调用
【发布时间】:2013-01-20 07:37:38
【问题描述】:

我正在使用 ICEfaces 3.2。我为特定的ace:textAreaEntry 字段定义了一个验证器方法。如果我的验证器中的验证代码失败,我将在上下文中添加一条面孔错误消息。我预计当此错误消息添加到上下文时,我的 actionListener 不会被执行。但我注意到,即使从我的验证器向上下文添加了 faces 错误消息,actionListener 也会被执行。我以为因为验证失败,人脸不会执行actionlistener

XHTML 文本区域入口代码:

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

【问题讨论】:

    标签: validation jsf-2 icefaces-3


    【解决方案1】:

    仅当您实际抛出 javax.faces.validator.ValidatorException 时,才认为验证失败

    尝试使用 FacesMessage 抛出异常:

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

    【讨论】:

    • 谢谢,我不知道我应该抛出一个验证器异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2013-02-27
    • 1970-01-01
    • 2020-08-07
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多