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 である可能性があり、スパンが空であるかどうかを確認してから、デフォルト値を指定します。

于 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 に答える