GWT RequestFactory - 1个EntityProxy的不同视图

时间:2012-06-21 15:06:43

标签: java requestfactory

我有一个DocumentEntityProxy,其中包含以下方法:

String getAttribute1();
void setAttribute1(String s);
String getAttribute2();
void setAttribute2(String s);
String getAttribute3();
void setAttribute3(String s);

我想要实现的是,如果您是标准用户,则只能使用getAttribute1()和setAttribute1(),如果您是管理员用户,则可以使用所有方法。在这个例子中,我只有三个属性和两种不同类型的用户,但在一个真实的项目中,当然还有很多。

实现这一目标的最佳方法是什么?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你可以使用inhertance:

class UserEntity {
  String getAttribute1() { }
  void setAttribute1(String s) { }
}

class AdminEntity extends UserEntity {
  String getAttribute2() { }
  void setAttribute2(String s) { }
}

代理人:

@ProxyFor(UserEntity.class)
interface UserEntityProxy extends EntityProxy {
  String getAttribute1();
  void setAttribute1(String s);
}

@ProxyFor(AdminEntity.class)
interface AdminEntityProxy extends UserEntityProxy {
  String getAttribute2();
  void setAttribute2(String s);
}

为了保护对实体类型的访问,您可以使用两种查找器方法(返回userEntity或adminEntity)并限制对后端方法的访问,例如:使用SpringSecurity的@Secured注释。