跳过嵌套的<a4j:region> </a4j:region>

时间:2010-07-28 15:20:45

标签: java jsf richfaces jsf-2

我有一个相当大的表单的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的区域中所有组件的验证?

2 个答案:

答案 0 :(得分:0)

在我使用skipMe区域(@NotNull等)中的JSR303注释验证之前,我可能找不到最佳解决方案。现在我只是在每个字段中使用validator=""属性,并在控制器中编写自己的验证器,当我按下“注册”按钮时,我添加f:param name="skipValidation" value="true"然后在我的验证器中使用,当如果将值设置为true,则跳过验证。猜猜这对我没问题,因为无论如何我必须为这个表单编写自定义验证器。

答案 1 :(得分:0)

您可以尝试使用流程属性:

其中id指向某个面板(例如h:panelGrid,而不是region)。您还可以将进程绑定到值绑定,但请确保在“应用请求值”阶段期间该值可用。