在我的JSF页面上,我有一个HTML输入复选框,允许用户选择是否需要礼物,并且<div>
仅在选中复选框的情况下,复选框信息下方的部分才会显示。选中该复选框后,将要求用户选择一个选项(从下拉菜单中,下拉菜单的初始值= null);但是,如果未选中此复选框,则不需要选择。
因此,有两个条件:
A.复选框被选中(== div视图被播放)
用户不选择任何内容->我希望显示所需的消息,这就是我所做的:
<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视图被隐藏)
由于我需要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}" />
即使未选中该复选框,提交也失败,似乎布尔检查从未更改。有人知道为什么吗?
只需让required
菜单的属性检查复选框是否被选中即可。您可以通过将物理复选框组件绑定到view bybinding
属性来完成此操作,这将使其最终出现在一个UIInput
实例中,该实例又具有getValue()
返回已提交/已转换/已验证值的方法。
<h:selectBooleanCheckbox binding="#{checkbox}" ... />
<h:selectOneMenu ... required="#{checkbox.value}" />
(注:该代码是完整的,是,你并不需要将其绑定到一个bean属性!)
请注意,这并不严格按照您明确要求的那样“有条件地显示消息”。它只是根据需要有条件地验证输入。消息是否显示只是一个结果。
更新:根据您尝试检查的尝试<h:selectBooleanCheckbox value>
,此方法将不起作用,因为此值仅在更新模型值阶段(即在要验证required
属性的验证阶段之后)更新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句