1

フォーム コントロール (テキスト ボックス、ラジオ ボタンなど) に @Persist フィールドを使用するフォームを含むページがあるため、フォームが送信された場合、カスタム検証が失敗した場合にデータがフォームに保持されます。

ドキュメントから、「@Persistでマークされたフィールドにはデフォルト値がない場合があります(インラインに設定されているか、コンストラクター内に設定されているか)」。ただし、一部のフォーム要素 (一部の @Validate("required") 選択ボックスを含む) のデフォルト値を設定する必要があります。

これを達成する方法は何ですか?

ありがとう

4

1 に答える 1

5

まず最初に、フォームの値を@persistする必要はないと思います。これは、タペストリーが検証に失敗した送信全体でフォームの値を保持するためです。デフォルト値を設定したい場合は、@SetupRenderで次のように設定できます。

@Porperty
@Persist
private String myValue;

@SetupRender
private void setup() {
    if(myValue == null) {
        myValue = "defaultVal";
    }
}

または、nullチェックゲッターで実行することもできます(@SetupRenderが呼び出されないため、イベントを使用する場合に便利です)。

@Persist
private String myValue;

public String getMyValue() {
    if(myValue == null) {
        myValue = "defaultVal";
    }
    return myValue;
}
于 2012-08-16T08:24:41.343 に答える