[英]How can I dynamically access property of Java object in GWT?
使用 GWT 我有一个 Java 类:
public class Pojo {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
上述类在客户端和服务器端代码之间共享。
从客户端代码我想动态访问该属性。 也就是说,我想写一个具有以下签名的方法:
public String getProperty(Object o, String propertyName)
这样下面的代码就可以工作了:
Pojo pojo = new Pojo();
pojo.setName("Joe");
getProperty(pojo, "name"); // this should return "Joe"
Java反射显然是出来的。 我尝试了以下 JSNI 方法:
public static native String getProperty(Object o, String name) /*-{
return o[name];
}-*/;
但这不起作用。
也不能使用从 JavaScript 访问 Java 对象的特殊语法,因为我希望它是动态的。
关于我如何做到这一点的任何想法?
为了完整起见,我还希望能够动态设置属性。
编辑:blwy10 的回答是一个很好的提示,让我使用“gwt 反射”而不是“动态属性访问”之类的术语进行搜索。 这让我想到了 gwt-ent ,它有一个非常优雅的反射解决方案。 我将尝试这个,因为它不需要单独的代码生成步骤。
您可以使用 GWT 的AutoBean 框架。 这是一个 2 分钟的快速和肮脏的例子:
public interface Person {
public String getName();
public void setName(String name);
}
public String getPropertyValue(Person p, String propertyName){
return AutoBeanUtils.getAllProperties(AutoBeanUtils.getAutoBean(p)).get(propertyName);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.