サーバー側の検証で問題が発生していますが、これが XPages で予期される動作なのか、それともここで何か単純なものが欠けているのかわかりません。
計算された検証式を持つフィールドがあります-基本的に、viewScope変数が設定されると必要になります。
私の送信ボタンはviewScopeを設定し、完全に更新します。
フォームが送信され、検証式が評価され、失敗した場合は検証の失敗が表示されると思います。しかし、送信ボタンをクリックすると、フォームはエラーなしで送信されます。もう一度クリックすると、期待どおりに検証が失敗します。
私の問題を説明するために、簡単な例を作成しました。
<xp:inputText id="inputText1" required="#{javascript:viewScope.validate}">
<xp:this.validators>
<xp:validateRequired message="This field is required."></xp:validateRequired>
</xp:this.validators>
</xp:inputText>
 
<xp:button value="Submit" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete" immediate="false" save="true">
<xp:this.action><![CDATA[#{javascript:viewScope.validate=true;}]]></xp:this.action>
<xp:this.script><![CDATA[dojo.attr(dojo.byId("#{id:inputText1}"),"aria-required","true")]]></xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:message id="message1" for="inputText1"></xp:message>
ご覧のとおり、検証を開始することを期待して、ボタン内に csjs を使用して aria-required 属性を追加しようとしました。
検証が期待どおりに機能している場合、このような動的検証を適切に機能させるための提案はありますか? データ ソースで querySave を使用して何かできることはわかっていますが (簡単にするために、例からデータ ソースを除外しました)、それよりも簡単な解決策があることを望んでいました。