2

私のフォームにはいくつかの「送信」ボタンがあり、いくつかのフィールドの検証はどちらが押されたかによって異なります。カスタムバリデーターでそれを見つけるにはどうすればよいですか?

4

2 に答える 2

6

ボタンのクライアント ID も の時点nameで生成され<input type="submit">ます。name=value押された get のも<input type="submit">リクエスト パラメータとして送信されます。そのため、リクエスト パラメータ マップでそれを確認できます。

例えば

<h:form id="formId">
    ...
    <h:commandButton id="button1" ... />
    <h:commandButton id="button2" ... />
</h:form>

validate()実装では次のとおりです。

Map<String, String> params = context.getExternalContext().getRequestParameterMap();

if (params.containsKey("formId:button1")) {
    // Button 1 is pressed.
}
else if (params.containsKey("formId:button2")) {
    // Button 2 is pressed.
}
于 2012-05-03T14:12:36.067 に答える
0

JSF の場合、エラー中に表示される組み込みの検証メッセージがあります。または、それぞれのタグのプライムフェイスで「validator & validatorMessages」などの検証属性を使用できます。

于 2012-05-03T11:29:30.793 に答える