根据复选框值有条件地进行所需的输入

时间:2013-10-02 18:04:15

标签: validation jsf checkbox selectonemenu required

在我的JSF页面上,我有一个HTML输入复选框,允许用户选择是否需要礼物,只有选中复选框,才会显示复选框信息下的<div>部分。选中该复选框后,用户将需要选择一个选项(从下拉菜单中,下拉菜单的初始值= null);但是,如果未选中该复选框,则不需要选择。

所以,有两个条件:

一个。选中复选框(= =播放div视图)

  1. 用户选择一个选项 - &gt;好
  2. 用户不选择任何内容 - &gt;我希望显示所需的消息,这就是我所做的:

    <p:message style="margin: 10px" id="messages7" for="npsScoreSupport" />
    <h:selectOneMenu id="npsScoreSupport" value="#{npsBean.supportScore}" required="true" requiredMessage="Please select an option">
        <f:selectItems value="#{npsBean.ratingPickList}" />
    </h:selectOneMenu>
    
  3. B中。未选中复选框(==隐藏div视图)

    1. 用户不选择任何内容 - &gt;好吧,但页面仍然要求用户选择一个选项,因为我有所需的=&#34; true&#34;。
    2. 由于我需要requireMessage以确保在选中复选框时选择了一个选项,我想知道是否可以根据复选框的状态使requireMessage成为条件? (复选框选中时需要,取消选中时不需要) 有什么建议吗?

      ============更新======================

      所以现在我更新了我的复选框并将其与JAVA类中的函数连接(默认为布尔变量check = true)

      <h:selectBooleanCheckbox class="someClass" value="#{someBean.check}" />
      

      这是我的选择器

      <h:selectOneMenu id="OptSelector" value="#{someBean.Opt}" required="#{someBean.check}" requiredMessage="Please select and option">
                                                      <f:selectItems value="#{npsBean.OptPickList}" />
      

      即使取消选中该复选框,提交仍然失败,似乎布尔检查永远不会改变。谁知道为什么?

1 个答案:

答案 0 :(得分:4)

如果选中该复选框,只需让菜单的required属性检查即可。您可以通过binding属性将物理复选框组件绑定到视图来执行此操作,这将使其最终位于UIInput实例中,而getValue()实例又返回提交的/ <h:selectBooleanCheckbox binding="#{checkbox}" ... /> <h:selectOneMenu ... required="#{checkbox.value}" /> 方法转换/验证的值。

<h:selectBooleanCheckbox value>

(注意:代码是完整的,你需要将它绑定到bean属性!)

请注意,这并不是您明确要求的严格“有条件地显示消息”。它只是根据需要有条件地验证输入。消息是否被显示仅仅是结果。

另见:


更新:根据您尝试检查required,这不起作用,因为此值仅在更新模型值阶段更新,即之后< / em>要检查{{1}}属性时的验证阶段。