required ="#{variable ==''}"仅在第二次提交时验证

时间:2015-07-10 09:13:10

标签: validation jsf required

我有一个<p:selectOneMenu>属性required="#{variable == ''}"。 此外,在同一表格中,我有一个<h:commandButton>

第一次按下按钮时,不验证选择字段。而是在第二次提交时验证该字段并验证没有选择。

所以似乎所需属性中的表达式确实有效,但从不首次提交表单。

我尝试使用process="@this fieldId",但这并没有真正帮助。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

因此,您将与空字符串进行比较。

required="#{variable == ''}"

如果变量实际为null,则会失败,如下面的快速测试所示。

System.out.println("".equals(null)); // false

第二个验证传递有效只能意味着变量代表另一个输入字段的值,并且您依赖于默认(but IMO bad)行为,即空输入值最终为空字符串而不是空字符串模特。

基本上,你需要这个:

required="#{variable == null || variable == ''}"

但最好使用EL empty运算符。它将检查无效和空虚:

required="#{empty variable}"

另见: