Как я могу динамически получить доступ к свойству объекта Java в GWT? - PullRequest
6 голосов
/ 26 августа 2010

Используя 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];
}-*/;

Но это не работает.

Специальный синтаксис для доступа к объектам Java из JavaScript не может быть использованлибо так, как я хочу, чтобы это было динамическим.

Любые идеи о том, как я могу это сделать?

Для полноты я также хочу иметь возможность динамически устанавливать свойство.

РЕДАКТИРОВАТЬ: ответ blwy10 был отличным советом, чтобы заставить меня искать, используя «gwt отражение» вместо таких слов, как «динамический доступ к свойству».Это привело меня к gwt-ent , который имеет очень элегантное решение для отражения.Я собираюсь попробовать это, так как он не требует отдельного шага генерации кода.

Ответы [ 3 ]

2 голосов
/ 26 августа 2010

Это не дает прямого ответа на ваш вопрос, но вы пробовали это?

http://gwtreflection.sourceforge.net/

Надеюсь, это поможет!

0 голосов
/ 17 сентября 2012

Вы можете использовать GWT AutoBean Framework . Вот 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);
}
0 голосов
/ 31 января 2011

Проверьте это решение:

http://jpereira.eu/2011/01/30/wheres-my-java-reflection/

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...