我有:
public FooPage( ... ) {
this.setDefaultModel( new CompoundPropertyModel(new GenericIdLDM( Foo.class, 1)) );
add(new Label("title"));
我想要$ subj。 我从2007年开始找到这个解决方案(点如下):http://www.mail-archive.com/wicket-user@lists.sourceforge.net/msg29603.html 但是,它不适用于CPM,因为它需要具有模型的构造函数。
我如何才能使其与CPM一起使用?
public class DefaultTextModel extends AbstractReadOnlyModel<String> {
private final IModel<String> delegate;
private final String def;
public DefaultTextModel(String def, IModel delegate) {
this.def = def;
this.delegate = delegate;
}
public String getObject() {
String s = delegate.getObject();
return (Strings.isEmpty(s)) ? def : s;
}
public void detach() {
delegate.detach();
}
}
答案 0 :(得分:1)
您的标签可以有自定义Converter
。我认为更好地反映了你的意图。请参阅示例https://cwiki.apache.org/WICKET/using-custom-converters.html#Usingcustomconverters-InWicket1.4
其他选项可能是JavaScript,检查范围是否为空,然后提供默认值。
答案 1 :(得分:0)
我可以覆盖Label#initModel():
protected IModel<?> initModel() {
return new DefaultTextModel(defaultModel, super.initModel());
}
更简单的解决方案是覆盖Label#onComponentTagBody()并在那里应用默认文本。
(Sven Meier在邮件列表上回复)