テキスト フィールドのカスタム バリデーターに苦労しています。カスタム検証は、必要な検証が実行された後にのみ機能するようです。これは、requiredValidator のないフィールドはカスタム検証できないことを意味します。それは本当ですか? 私がしたいこと:
テキストフィールドがあります。値は、別のフィールドで特定の値が選択されている場合にのみ必要です (ここでは、これはチェックボックス グループです)。これは依存検証です。テキスト フィールドが必要になるまで、カスタム バリデータは正常に動作しますが、そうではありません。
チェックボックスには特定の値がありません -> テキストフィールドは空白にすることができます
チェックボックスは値を保持します -> テキストフィールドには値が必要です。
何か案は?
<xp:inputText id="inputText1" disableClientSideValidation="true">
</xp:inputText>
<xp:inputText id="inputText2" disableClientSideValidation="true">
<xp:this.validators>
<xp:customValidator message="err">
<xp:this.validate><![CDATA[#{javascript:if(getComponentValue("inputText1").length>0 && getComponentValue("inputText2").length==0) postValidationError(this, "foo")}]]></xp:this.validate>
</xp:customValidator>
</xp:this.validators>
</xp:inputText>
ここで、getComponentValue はコンポーネントから getValue または getSubmittedValue を使用して値を受け取るメソッドであり、postValidationError は Faces メッセージを追加するメソッドです。
編集と最終回答
結論とサンプルはこちら: http://mardou.dyndns.org/Privat/osnippets.nsf/id/OBUE-95BLK4