0

最终我需要做一些跨领域验证,并认为我会使用自定义验证器来做到这一点。但我什至无法得到一个简单的例子来工作。以下代码(与“Mastering XPages”第 116 页上的代码非常相似,允许任何值(包括空字段)。我是否遗漏了一些明显的东西?

            <xp:inputText
                id="field1"
                value="#{document1.field1}">
                <xp:this.validators>
                    <xp:customValidator>
                        <xp:this.validate><![CDATA[#{javascript:if (value == "") {
return new javax.faces.application.FacesMessage("Please enter a value");
}}]]></xp:this.validate>
                    </xp:customValidator>
                </xp:this.validators>
            </xp:inputText>
4

2 回答 2

8

无法使用验证器验证空字段。验证器仅在值存在时运行。在 XPages 中,您拥有允许检查空字段的字段的必需属性;这是解决此问题的一种解决方法,并且(据我所知)无法创建自己的“必需”验证器。

如果您想创建自己的,则必须创建一个转换器

更新 21.06.2013

可以通过一个小解决方法创建自己需要的验证器: http ://hasselba.ch/blog/?p=764

于 2013-01-31T08:28:55.507 回答
2

您需要返回一个包含错误消息的字符串 - 而不是 FacesMessage 对象。

因此,在您的情况下,请改为执行以下操作:

<xp:inputText id="field1" value="#{document1.field1}">
    <xp:this.validators>
        <xp:customValidator>
            <xp:this.validate><![CDATA[#{javascript:
                if (value == "") {
                    return "Please enter a value";
                }
            }]]></xp:this.validate>
        </xp:customValidator>
    </xp:this.validators>
</xp:inputText>
于 2013-01-30T21:24:16.163 回答