私は困惑しています。カスタムバリデータを追加した xpage に入力フィールドがあります。何を試してもカスタムバリデーターを起動できません。期待どおりに機能する validateRequired もあります。エラー メッセージは「Display Error」コントロールに送信され、クライアント側の検証は無効になります。カスタム バリデータの目的は、有効な日付が入力されているかどうかを確認することです。動作するようになったら、有効な曜日のチェックなど、他の複雑な検証も追加する予定です。
「inside true」が有効な日付をコンソールに表示し、「inside false」が無効な日付を表示するように、print ステートメントは正しく機能します。if ステートメントの後に test print ステートメントを追加すると、思ったように実行されません。どちらの条件でも、メッセージは表示されず、ページは送信されます。
getValue() と getSubmittedValue の両方を使用してみました。また、facesMessage と文字列を返そうとしました。私はまた、これを行うためのより良い方法に対して非常にオープンです。
<xp:inputText id="datepicker" styleClass="datepicker"
value="#{viewScope.arrivalDate}"
defaultValue="#{javascript:statusBean.arrivalDate}"
disableClientSideValidation="true">
<xp:this.validators>
<xp:validateRequired message="Please enter the arrival date">
</xp:validateRequired>
<xp:customValidator message="err" loaded="true">
<xp:this.validate><![CDATA[#{javascript:var datepicker = getComponent("datepicker").getSubmittedValue();
var testDate = @IsTime(@TextToTime(datepicker));
print("testDate=" + testDate);
if(testDate == 0){
print("inside false");
return false;
} else if(testDate == 1){
print("inside true");
return true;
}}]]>
</xp:this.validate>
</xp:customValidator>
</xp:this.validators>