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



我有一个具有required="#{variable == ''}"属性的<p:selectOneMenu>。此外,在同样的形式下,我有一个<h:commandButton>

第一次按下按钮时,选择字段未被验证。相反,在第二次提交时验证该字段,并验证没有选择。

因此,required属性中的表达式似乎起作用了,但在第一次提交表单时却不起作用。

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

这样就比较了一个空字符串。

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

如果变量实际上是null,这将失败,如下面的快速测试所示。

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

第二个验证通过工作只能意味着变量表示另一个输入字段的值,并且您依赖于默认(但IMO不好)的行为,即空输入值最终作为空字符串而不是模型中的null。

基本上,你需要这个:

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

但最好使用EL empty运算符。它将检查null和空值:

required="#{empty variable}"

参见:

  • EL空操作符如何在JSF中工作?

相关内容

  • 没有找到相关文章

最新更新