如何在XPage中使用验证程序验证复选框

时间:2015-03-03 17:43:16

标签: xml validation xpages xsp

如何使用验证器服务器端验证复选框,以下代码验证输入框但不验证复选框

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="Order"></xp:dominoDocument>
    </xp:this.data>
    <xp:checkBox text="Nop" id="checkBox1" required="true" value="#{document1.Option1}" checkedValue="1">
        <xp:this.validators>
            <xp:validateRequired message="click checkbox"></xp:validateRequired>
        </xp:this.validators>
    </xp:checkBox>
    <xp:inputText id="inputText1" value="#{document1.Option2}">
        <xp:this.validators>
            <xp:validateRequired message="enter box"></xp:validateRequired>
        </xp:this.validators>
    </xp:inputText>
    <xp:button value="Label" id="button1">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action>
                <xp:saveDocument var="document1"></xp:saveDocument>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
    <xp:messages id="messages1"></xp:messages>
</xp:view>

2 个答案:

答案 0 :(得分:3)

使用自定义验证程序而不是必需的参数和必需的验证程序。

<xp:checkBox text="Nop" id="checkBox1" value="#{document1.Option1}" checkedValue="1">
    <xp:this.validators>
        <xp:customValidator>
            <xp:this.validate><![CDATA[#{javascript:
                if (value != "1") {
                    this.setValid(false);
                    return "click checkbox";
                }
                return null;
            }]]></xp:this.validate>
        </xp:customValidator>
    </xp:this.validators>
</xp:checkBox>

复选框以这种方式在服务器上验证。

enter image description here

答案 1 :(得分:0)

只是一种解决方法,可能有更好的解决方案。但是,如果没有其他任何帮助你可以尝试使用第二个字段或可能是范围var:

想法#1:使用您的按钮代码查询复选框的submittedValue,而不是使用验证器。如果这对你很好,那么继续退出。

想法#2:不要将复选框绑定到Notes数据字段,而是使用它的onclick或onchange事件将正确的值写入EditBox,然后再对其进行验证

再说一遍:这两个人刚出现的方式可能会好得多,而我却没有尝试过。 - 祝你好运!