2013-02-19 38 views
0

我:檢票:標籤與默認的文本,如果模型空+ CompoundPropertyModel

public FooPage(...) { 
    this.setDefaultModel(new CompoundPropertyModel(new GenericIdLDM(Foo.class, 1))); 
    add(new Label("title")); 

我想有$ SUBJ。 我發現這個解決方案從2007年開始(點下):http://www.mail-archive.com/[email protected]/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

我可以重寫標籤#initModel():

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

一個簡單的辦法是重寫標籤#onComponentTagBody(),只是應用默認的文本那裏。

(斯文梅耶爾回答在郵件列表)