我正在玩一些JSF页面的泛化。要求的一个功能是使它们与字段名无关 - 将字段名作为参数传递,而不是将它们绑定到辅助bean中的特定getter / setter。
所以不要绑定像这样的特定字段:
<custom:editor value="#{backingViewBean.editorValue}" />
...对于这样的后端方法:
public String getEditorValue() ...
public void setEditorValue(String editorValue) ...
...我正在尝试将它绑定到这样的后端方法:
public String getFieldValue(String fieldName) ...
public void setFieldValue(String fieldName, String fieldValue) ...
我是否有一些优雅的方式可以使用value
属性来模仿getter和setter通常的行为?或者这种方法是否需要更多的复杂性?
答案 0 :(得分:2)
对我来说,看起来你正在寻找一种方法来为你的bean中的所有变量设置一对getter和setter,所以如果你要'懒惰',你可以实现你的托管bean中的数据,你可以实现{ {1}}进入bean然后你可以覆盖put并得到这样的Methode: 公共类DataBean实现了Serializable,java.util.Map {
java.util.Map
这将允许您在bean中存储值,而无需为bean中的每个var创建getter和setter:
public class DataBean implements Serializable, java.util.Map {
private static final long serialVersionUID = 1L;
private final HashMap<String, Object> BeanData;
public DataBean(){
BeanData = new HashMap<String,Object>();
}
@Override
public Object get(final Object key) {
if (key == null) {throw new IllegalArgumentException("Key cannot be null.");}
return BeanData.get(key);
}
@Override
public Object put(final Object key, final Object value) {
if (key == null) {throw new IllegalArgumentException("Key cannot be null.");}
BeanData.put(key.toString(), value);
return null;
}