有没有办法用给定的getter方法获取字段名称。
我通过使用反射API获取所有getter(s)(getYYY)。现在我想知道'yyy'的价值。这样我就可以使用像#{bean.yyy}这样的表达式来访问这个getter方法。
示例如下所示。
getId - id
getID - ID(我认为它可能是'iD',但它应该是'ID')
getNPI - NPI
getNPi - NPi
getNpi - npi
getNpI - npI
请指出java bean约定资源(如果有的话)。
答案 0 :(得分:1)
您可以从Oracle网站下载JavaBeans spec。
您可以使用java.beans
包内省bean:
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)" : ""));
}
}
}
如果您确定要,您还可以测试属性绑定表达式using a an EL implementation。
答案 1 :(得分:1)
您可以使用Java Beans API(包java.beans
)而不是直接使用反射来获取类的bean属性。例如:
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);
}
(注意:省略了异常处理)。