0

我有:

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();
}

} 
4

2 回答 2

1

您可以Converter为您的标签定制。我认为更好地反映了你的意图。参见例如https://cwiki.apache.org/WICKET/using-custom-converters.html#Usingcustomconverters-InWicket1.4

其他选项可以是 JavaScript,检查 span 是否为空,然后提供默认值。

于 2013-02-25T20:02:43.990 回答
0

我可以覆盖 Label#initModel():

protected IModel<?> initModel() {
    return new DefaultTextModel(defaultModel, super.initModel());
}

一个更简单的解决方案是覆盖 Label#onComponentTagBody() 并在那里应用默认文本。

(Sven Meier 在邮件列表中回复)

于 2013-02-20T16:19:40.587 回答