【问题标题】:FacesContext isValidationFailed is returning false even when string to numeric conversion is failed即使字符串到数字的转换失败,FacesContext isValidationFailed 也会返回 false
【发布时间】:2015-07-01 23:26:05
【问题描述】:

我有这么多值的表单,每个都有自己的验证。为简单起见,我在这里只取整数和字符串。

<form jsf:id="aaaa" >
     <input type="text"
               jsf:id="number-field" 
               jsf:value="#{managedBean.bean.value1}"
               jsf:converterMessage="Error Integer"                           
      </input>
      <input type="text"
               jsf:id="text-field" 
               jsf:value="#{managedBean.bean.value2}"
               jsf:converterMessage="Error Text"                           
      </input>
      <button jsf:id="reset-data-button" 
                jsf:action="#{managedBean.save}" jsf:immediate="true">
                submit
                <f:ajax execute="@form" render="@form/>
      </button>
</form>

value1 是整数,value2 是字符串。

在我的 bean 中,我手动验证字段并存储到数据库。我不想多次显示错误消息,所以我添加了 immediate true。

在我的豆子里

public void save() {                
    if (value1.valid() && value2.valid() && facesContext.isValidationFailed()) {
        //do some action
    }
}

虽然I have entered string value in value1 which is integer field 我得到facesContext.isValidationFailed() as false 但应该是真的。

我这里有什么错误吗?

我正在使用 mojarra 2.2.8

【问题讨论】:

  • @kolossus 是的,我的意思是 bean.value1 是整数类型。你能帮忙吗

标签: jsf jsf-2


【解决方案1】:

命令按钮上的立即属性意味着action="#{managedBean.save}"APPLY_REQUEST 值阶段之后立即执行。这造成的问题是 value1value2 那时还没有设置为表单条目,因此任何依赖于该条件的逻辑都会失败。

您应该在此处将这些输入组件标记为immediate="true" 并为组件添加适当的验证器。这种组合将确保在执行save 方法的同一步骤中验证组件。但是,您仍然无法访问经过验证的输入值;直到请求处理的UPDATE_MODEL_VALUES 阶段才会发生这种情况,在save 方法执行很久之后

【讨论】:

  • 谢谢。在这里,我的意图是始终调用保存方法并执行一些业务功能,尽管输入字段无效,并且仅在它们按类型和自定义逻辑有效时才保存。你能建议我怎么做吗
  • 您可以在基于视图的事件处理程序中执行此操作,例如 f:viewAction,因为您使用的是 JSF-2.2 @Patan
  • 哇,那条评论和 “我不想多次显示错误消息,所以我添加了立即 true。” 问题中的 XY-problem,Patan。我认为明智的做法是退后一步,明确具体的功能需求,这样才能找到正确的解决方案。
  • @BalusC。对困惑感到抱歉。我会提出明确要求的新问题。
猜你喜欢
  • 1970-01-01
  • 2018-02-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多