我有一个相当大的表单的JSF文件,表单由3部分组成:用户数据(日历和数据输入集),用户项(数据表和带有一些输入的小表和一个按钮,根据小表中提供的信息添加新条目,其他(类似用户数据)。我有一个巨大的,每个部分都是嵌套的(因为例如当我按下“添加项目”按钮时我想验证它)。
但是当我按下“注册”按钮时,它应该处理整个巨大的形式(所有3个部分)有没有办法跳过单个嵌套?因为在注册新用户时,我并不需要验证数据表中用于添加新项目的字段。所以基本上给出了类似的东西:
<h:form>
<a4j:region>
<a4j:region>
</a4j:region>
<a4j:region id="skipMe">
</a4j:region>
<a4j:region>
</a4j:region>
</a4j:region>
<a4j:commandButton value="Register" action="#{bean.someAction}"/>
</h:form>
当我们点击commandButton时,有没有办法跳过使用“skipMe”id的区域中所有组件的验证?
答案 0 :(得分:0)
在我使用skipMe
区域(@NotNull
等)中的JSR303注释验证之前,我可能找不到最佳解决方案。现在我只是在每个字段中使用validator=""
属性,并在控制器中编写自己的验证器,当我按下“注册”按钮时,我添加f:param name="skipValidation" value="true"
然后在我的验证器中使用,当如果将值设置为true,则跳过验证。猜猜这对我没问题,因为无论如何我必须为这个表单编写自定义验证器。
答案 1 :(得分:0)
您可以尝试使用流程属性:
其中id指向某个面板(例如h:panelGrid,而不是region)。您还可以将进程绑定到值绑定,但请确保在“应用请求值”阶段期间该值可用。