我有一个映射到我的对象的CompoundPropertyModel。
例如
final TextField<String> adresseName = new TextField<String>("Adresse");
映射到
public class Invoice implements Serializable{
private String adresse;
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
}
但是,如果对象地址为 null 或未设置,我希望在文本字段中设置默认值,例如"。
我该怎么做?
问候,戴夫
setConvertEmptyInputStringToNull(false) 应该这样做。
方法是确保Invoice.getAdresse()
返回空字符串而不是null
。
public String getAdresse() {
return addresse != null ? adresse : "";
}
毕竟,如果null
不是有效值,则 UI 层的工作不是强制执行该规则。
更新:如果您必须为此使用 Wicket,您的另一个选择是使用模型链接。首先,您需要创建一个模型,用于设置查询的默认值。
class HackyModel extends Model {
public Object getObject() {
Invoice ret = (Invoice)super.getObject();
if( ret != null && ret.getAddresse() == null ) {
ret.setAddresse( "" );
}
return ret;
}
}
然后将此模型传递给 CompoundPropertyModel
的构造函数。当 Wicket 尝试通过CompoundPropertyModel
设置/获取任何字段时,您的模型将首先被调用以检索后备Invoice
对象,该对象充当一种过滤器。
这不是一个好的解决方案,因为Model.getObject()
不应该修改支持对象,但它可能是您必须用来绕过考虑不周的 POJO 的最干净的黑客。