如何使ZK页面与bean的非公共属性绑定

时间:2012-01-13 18:37:52

标签: zk

如何启用ZK页面与bean的非公共属性绑定。

假设我有一个名为Book的域对象,它看起来像

class Book{
private String name;

protected String getName(){
return name;
}

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

我希望能够使用@ {book.name}绑定一个文本框,目前我认为需要使用getter和setter作为公共绑定。

像hibernate这样的框架也可以在非公共属性上运行,那么为什么zk也没有选择,可以通过配置更改来启用它?

任何建议都会很棒。

由于 苏达

2 个答案:

答案 0 :(得分:0)

将这些访问器公开为子类并使用子类而不是类Book。

答案 1 :(得分: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() {}
}

总结:您应该针对Book界面编写所有其他模块。您仍然可以使用反射来实现模型。要生产鬃毛物体,请使用工厂。