Нужна утилита JavaBean - PullRequest
       5

Нужна утилита JavaBean

2 голосов
/ 25 мая 2011

Есть ли способ получить имя поля с помощью данного метода получения.

Я получаю все методы получения (getYYY), используя API отражения.теперь я хочу знать это значение «гггг».так что я могу получить доступ к этому методу getter с помощью выражения вроде # {bean.yyy}.

Пример приведен ниже.

getId - id

getID -ID (я думал, что это может быть 'iD', но это должно быть 'ID')

getNPI - NPI

getNPi - NPi

getNpi - npi

getNpI - npI

Пожалуйста, укажите мне ресурсы конвенции Java Bean, если таковые имеются.

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Вы можете использовать API Java Beans (пакет java.beans) вместо прямого отражения, чтобы получить свойства компонента класса.Например:

import java.beans.*;

// ...
MyBean bean = ...;

BeanInfo beanInfo = Introspector.getBeanInfo(MyBean.class, Object.class);

for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
    System.out.println("Property: " + pd.getName());

    // Get the getter method of a property
    Method getter = pd.getReadMethod();

    // Call it to get the value in an instance of the bean class
    Object value = getter.invoke(bean);

    System.out.println("Value: " + value);
}

(Примечание: обработка исключений опущена).

1 голос
/ 25 мая 2011

Вы можете загрузить спецификацию JavaBeans с веб-сайта Oracle.

Вы можете проанализировать бобы, используя пакет java.beans:

public class FooBean implements Serializable {
  private String ID;
  public String getID() { return ID; }
  public void setID(String iD) { ID = iD; }

  public static void main(String[] args) throws Exception {
    for (PropertyDescriptor property : Introspector.getBeanInfo(FooBean.class)
        .getPropertyDescriptors()) {
      System.out.println(property.getName()
          + (property.getWriteMethod() == null ? " (readonly)" : ""));
    }
  }
}

Если вы решите, что действительно хотите, вы также можете протестировать выражения привязки вашего свойства , используя реализацию EL .

...