validation - 根据复选框值有条件地进行输入

标签 validation jsf checkbox selectonemenu required

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

所以,这里有两个条件:

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

  1. 用户选择一个选项 -> 好的
  2. 用户不选择任何东西 -> 我希望显示所需的消息,这就是我所做的:

    <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>
    

B.复选框未选中(== div View 已隐藏)

  1. 用户没有选择任何东西 -> 好吧,但是页面仍然需要用户选择一个选项,因为我有 required=“true”。

由于我需要 requireMessage 来确保在选中复选框时选择了一个选项,我想知道是否可以根据复选框的状态使 requireMessage 成为条件? (选中复选框时需要,未选中时不需要) 有什么建议吗?

============已更新======================

所以现在我已经更新了我的复选框并将其与 JAVA 类中的函数连接( bool 变量 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}" />

即使未选中复选框,提交也会失败, bool 检查似乎永远不会改变。有人知道为什么吗?

最佳答案

就让required菜单的属性检查复选框是否被选中。您可以通过 binding 将物理复选框组件绑定(bind)到 View 来完成此操作属性,这将使它最终成为 UIInput实例又具有 getValue()返回提交/转换/验证值的方法。

<h:selectBooleanCheckbox binding="#{checkbox}" ... />
<h:selectOneMenu ... required="#{checkbox.value}" />

(注意:代码按原样完整,您不需要将它绑定(bind)到 bean 属性!)

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

另见:


更新:根据您尝试检查 <h:selectBooleanCheckbox value>相反,这将不起作用,因为此值仅在更新模型值阶段更新,即 验证阶段时 required属性将被检查。

关于validation - 根据复选框值有条件地进行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19143684/

相关文章:

user-interface - 多选 Web UI 的最佳实践?

asp.net-mvc - 使用 Knockout JS + MVC + 服务器端模型验证显示错误?

javascript - 使用 jQuery ajax 时在一个 div 中显示所有 laravel 验证错误

javascript - 此 Javascript 片段的 W3C 验证错误

java - @all 在 JSF Ajax 中不起作用

javascript - 将复选框值传递给 Angular 的 ng-click

javascript - 为什么 jquery 验证不起作用?

jsf - Primeface的remoteCommand - 有办法执行一次吗?

css - 在 <h :column> from backing bean 中设置 <td> 颜色

php - 循环一个复选框列表,其中一些可能未在 PHP 中选中