0

最終的に、クロスフィールド検証を行う必要があり、カスタムバリデーターを使用してこれを行うと考えました。しかし、簡単な例を機能させることさえできません。次のコード (「Mastering XPages」の p.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 に答える