如何在GWT中动态访问Java对象的属性?

Dav*_*kes 6 gwt

使用GWT我有一个Java类:

public class Pojo {
  private String name;
  public String getName() { return name; }
  public void setName(String name) { this.name = name; }
}
Run Code Online (Sandbox Code Playgroud)

上述类在客户端和服务器端代码之间共享.

从客户端代码我想动态访问该属性.也就是说,我想用以下签名编写一个方法:

public String getProperty(Object o, String propertyName)
Run Code Online (Sandbox Code Playgroud)

这样以下代码可以工作:

Pojo pojo = new Pojo();
pojo.setName("Joe");
getProperty(pojo, "name");    // this should return "Joe"
Run Code Online (Sandbox Code Playgroud)

Java反射显然已经出来了.我尝试了以下JSNI方法:

public static native String getProperty(Object o, String name) /*-{
  return o[name];
}-*/;
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

无法使用从JavaScript访问Java对象的特殊语法,因为我希望它是动态的.

有关如何做到这一点的任何想法?

为了完整起见,我还希望能够动态设置属性.

编辑:blwy10的答案是一个很好的提示让我搜索使用"gwt反射",而不是像"动态属性访问"这样的术语.这引出了我的gwt-ent,它具有非常优雅的反射解决方案.我将尝试这个,因为它不需要单独的代码生成步骤.

blw*_*y10 2

这并不能直接回答你的问题,但你尝试过吗?

http://gwtreflection.sourceforge.net/

希望这可以帮助!