2012-01-13 17 views
1

ZKページを有効にして、Beanの非公開プロパティとバインドする方法。ZKページをBeanの非公開プロパティとバインドする方法

は私が@ {book.name}を使用してテキストボックスをバインドできるようにしたい

class Book{ 
private String name; 

protected String getName(){ 
return name; 
} 

protected void setName(String name){ 
this.name = name; 
} 
} 

のように見えるブックと呼ばれるドメインオブジェクトがあるとし、現時点では私は私がする必要があります結合enbleと思いますゲッターとセッターを公開する。

hibernateのようなフレームワークは非公開のプロパティでも動作することができますが、なぜzkもそれを選択しなかったのですが、これを有効にする設定変更が可能ですか?

どのような提案も素晴らしいでしょう。

おかげ Sudarshan

答えて

0

サブクラスそれをこれらのアクセサは、公開することとし、代わりにクラスBookのサブクラスを使用します。

+0

それは非常にエレガントな解決策ではありません、私は、サブクラス化する必要があるUIで表示する必要がある各クラスでクラスを膨らませるだろうし、また、私はその継承の悪用だと思う。 – Sudarshan

+0

これはカプセル化の違反です - あなたがしたいことです。さもなければ、私が提案したのと同じことを実行時(SpringAspectsを使って)またはAfter-Compile(AspectJを使って)で行うAspectを作ることができます。 –

+0

私は自分のプロパティをプライベートに保つつもりですし、パブリックgetterとsetterを公開したくないので、カプセル化されているほとんどのアプリケーションではUIレイヤーでそれが妥協されていますが、私は喜んでzkがそれを行う方法を提供するかどうか疑問に思っていた。 – Sudarshan

0

ドメインモデルの定義:

public interface Book { 
    // some public methods you want to expose 
} 

ドメインモデルの実装:

// This class is of package visibility 
class BookSomewhatSpecificImplementation implements Book { 
    private String name; 

    // Note that they are package-scoped. 
    String getName(){ 
    return name; 
    } 

    void setName(String name){ 
    this.name = name; 
    } 
} 

オブジェクトファクトリ:

public final class DomainModelFactory { 
    public static Book createBook(/* Some parameters */) { 
    return new BookSomewhatSpecificImplementation(); 
    } 
    private DomainModelFactory() {} 
} 

概要:あなたはブック・インターフェースに対する他のすべてのモジュールをプログラミングする必要があります。モデルの実装にリフレクションを使用することはできます。麻のオブジェクトを生産するには、工場を使用します。

関連する問題