2

保存ボタンと送信ボタンのある大きなフォームを持つ webMethods CAF タスクがあります。フォーム上の多くの要素には検証があります。ユーザーは [保存] をクリックし、フォームをバックエンド モデルに送信して、検証を実行せずにタスク データとして保存できるようにする必要があります。[送信] をクリックすると、検証が開始されます。

これを行うようにページを構成するにはどうすればよいですか。それはとても正常な要件であり、私は立ち往生しています!

4

2 に答える 2

2

あまり楽しくありません。

  1. 保存ボタンに適切な ID を付けます。言って、saveButton
  2. ブール値を返す Java コードでゲッターを作成します。その中で、ボタンの ID が送信されたフィールドの 1 つである場合は true、そうでない場合は false を返します。

    private boolean validationRequired() {
        return mapValueEndsWith((Map<String, String>)getRequestParam(),
            new String[] {
                "saveButton",           // Your save button
                "anotherButton",        // Perhaps another button also shouldn't validate
                "myForm:aThirdButton"   // perhaps you want to be specific to a form
            });
    }
    
  3. 保存時を除き、必須にする必要があるすべてのフィールドで、 Validation->required 属性を validationRequired ゲッターにバインドします。

それでおしまい!画面上に多くのフィールドが表示されるのは非常に面倒ですが、機能します。

Ps mapValueEndswith とは何ですか? 単なるユーティリティです。コンパクトにするために空白を削除しました:

private boolean mapValueEndsWith(Map<String, String> haystack, String[] needles) {
    for(String needle : needles) if(mapValueEndsWith(haystack, needle)) return true;
    return false;
}

private boolean mapValueEndsWith(Map<String, String> haystack, String needle) {
    for(String value : haystack.values()) if(value.endsWith(needle)) return true;
    return false;
}
于 2015-03-31T12:01:54.553 に答える
-2

提供されたアプローチを見ると、フォームに文字列型フィールドのみが含まれている場合にのみ機能します。integer、float、data-time などの他のデータ型が UI フィールドにマップされ、変換が使用されている場合、これらのフィールドに間違ったデータが入力されると失敗する可能性があります。

于 2015-04-02T11:37:33.987 に答える