Tapestry5 @Persist默认值

fab*_*pro 1 tapestry

我有一个带有表单的页面,它使用@Persist字段作为表单控件(文本框,单选按钮等),这样如果提交表单,如果自定义验证失败,数据将保留在表单中.

从文档中,"标有@Persist的字段可能没有默认值(无论是设置为内联还是设置在构造函数内)".但是,我需要为某些表单元素设置默认值(包括一些@Validate("required")选择框).

实现这个目标的方法是什么?

谢谢

joo*_*ten 5

首先,我认为你不需要@persist你的表单值,因为tapestry将保持它们在验证失败提交.如果你想设置默认值,你可以在@SetupRender中这样做:

@Porperty
@Persist
private String myValue;

@SetupRender
private void setup() {
    if(myValue == null) {
        myValue = "defaultVal";
    }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以在null check getter中执行此操作(这在使用事件时非常有用,因为@SetupRender未在其中调用):

@Persist
private String myValue;

public String getMyValue() {
    if(myValue == null) {
        myValue = "defaultVal";
    }
    return myValue;
}
Run Code Online (Sandbox Code Playgroud)