0

複数の Dojo コンテンツ・ペインに分割された XPage があります。クライアント・サイド JavaScript を使用して、どの Dojo コンテンツ・ペインを表示するかを決定します。ここで、いくつかの必須フィールドの検証を XPage に追加したいと考えています。ただし、クライアント・サイドとサーバー・サイドのどちらの検証でも、文書は保存されませんが、検証が必要なフィールドが、現在表示されている Dojo コンテンツ・ペイン以外の Dojo コンテンツ・ペインにある場合、サーバー・サイドのエラーはユーザーに表示されません。メッセージが表示され、検証に失敗したフィールドにカーソルが配置されません (クライアント側のメッセージは表示されますが、検証に失敗したフィールドにはカーソルが配置されません)。フィールドが検証に失敗したときに実行される CSJS コードを追加する方法はありますか? (理想的には、サーバー側の検証のみを使用したい)

ここに検証が必要なフィールドがあります

<xp:inputText id="FirstName" value="#{document1.FirstName}" required="true">
    <xp:this.validators>
        <xp:validateRequired>
            <xp:this.message><![CDATA["REQUIRED"]]></xp:this.message>
        </xp:validateRequired>
        <xp:validateLength minimum="5" maximum="10">
            <xp:this.message><![CDATA["VALIDATE"]]></xp:this.message>
        </xp:validateLength>
    </xp:this.validators>
</xp:inputText>

Dojo コンテンツ ペインのコードは次のとおりです。

<xe:djContentPane id="Employee">  

Dojo コンテンツ・ペインを表示または非表示にする CSJS コード

var Allgemein = dojo.byId("#{id:Allgemein}");
if (sectionDisplay == "Allgemein") {
    dojo.style(Allgemein, "display", "block");
} else {
    dojo.style(Allgemein, "display", "none");
}
var sectionDisplay = dojo.cookie("sectionDisplay");
4

1 に答える 1

2

コードがどれほど洗練されているかによって、できることはたくさんあります。必須フィールドのみを (クライアント側で) チェックしたい場合は、onSubmitEvent を追加し、属性としてaria-requiredを持つフィールドを探します。それらから、ユーザーが問題のあるコントロール (空のコントロール) にジャンプできるようにするディスプレイを作成します。

何を検証したいのかわからないため、むしろサーバー側の検証を行う場合は、onload スクリプト (送信によりページが更新された) またはaria-invalid属性を探す部分的な更新後に実行されるスクリプトを用意します。次に、異なるペインに複数ある可能性があるため、必要なコントロールにジャンプするリストまたはテーブル リストをレンダリングできます。

エラー メッセージ コントロール (サーバー側の検証エラーを表示するもの) を、常に表示される上部のペインに配置します (常に、エラー メッセージが空でない場合)。

理にかなっていますか?

于 2013-07-22T14:40:27.363 に答える