我可以在JSF中的Backing Bean的Getter和Setter中添加额外的参数吗?

时间:2013-12-18 20:59:46

标签: jsf

我正在玩一些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通常的行为?或者这种方法是否需要更多的复杂性?

1 个答案:

答案 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;
    }