【问题标题】:Validating multiple booleancheckboxes验证多个布尔复选框
【发布时间】:2023-03-31 11:27:02
【问题描述】:

我对下面的代码有一点问题。我们必须使用布尔复选框,我们有 12 个,正如您在代码中看到的那样。我想制作一个验证器,因此用户必须至少选择其中一个,但这并不容易,因为所有复选框都是单独的,而且由于循环,我也不能给它们 ID-s。验证它的正确方法是什么,或者它是如何可能的。

<rich:dataGrid id="checkboxes" value="#{MonitorBean.signalingOptions}" var="Signal" columns="3" elements="12" first="0">
                        <f:facet name="header">
                            <h:outputText value="Signaling options"></h:outputText>
                        </f:facet>

                        <rich:panel bodyClass="pbody">
                            <h:panelGrid columns="2">
                                <h:selectBooleanCheckbox value="#{Signal.toMonitor}"  required="true" disabled="enabled">
                                <!--<f:validator validatorId="util.CheckboxValidator" />-->
                                    <h:message for="checkboxes" styleClass="errors"/>
                                </h:selectBooleanCheckbox>

                                <h:outputText value="#{Signal.signalName}"></h:outputText>                        
                         </h:panelGrid>                    
                        </rich:panel>                  
                    </rich:dataGrid>  

感谢您的帮助!

【问题讨论】:

    标签: jsf jakarta-ee richfaces


    【解决方案1】:

    您需要一个验证器来检查所有字段(这些字段再次映射到处理程序代码中的某个字段)。 也许this answer 有帮助。

    【讨论】:

    • 我认为这行不通,因为我不能一个一个地给我的复选框名称和属性,因为它们是由循环生成的吗?
    • @enricko 您不需要指定 id,但当然您需要将组件映射到 Java 代码中的成员(如果您使用用户输入,您肯定已经这样做了) .例如,请参阅this。
    • 是的,但是 jsf 验证部分发生在组件被写入地图之前,所以我不能使用处理程序代码,或者我只是没有通过示例得到它一个验证器类。
    • @enricko 我明白了,那么您可以为动态创建的组件分配 id 并像 here 所示那样验证它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多