【问题标题】:Can I Put Extra Parameters in Backing Bean's Getters and Setters in JSF?我可以在 JSF 中支持 Bean 的 Getter 和 Setter 中添加额外的参数吗?
【发布时间】:2014-01-07 05:29:35
【问题描述】:

我正在尝试通用化一些 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 通常的行为方式?还是这种方法需要比这更复杂的方法?

【问题讨论】:

  • 不知道是否满足你的需求,但你见过数组符号:#{backingViewBean[decidingBean.fieldName]}?
  • @mabi:哦。这看起来很有希望。我会调查的。

标签: jsf


【解决方案1】:

对我来说,您似乎正在寻找一种方法来为您的 bean 中的所有变量设置一对 getter 和 setter,因此如果您要为托管 bean 中的所有数据“延迟”它们,您可以实现 @ 987654321@ 进入 bean 然后你可以像这样覆盖 put 并获取 Methode: public class DataBean 实现 Serializable,java.util.Map {

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

这将允许您在 bean 中存储值,而无需为 bean 中的每个 var 创建 getter 和 setter:

  <h:inputText  value="#{dataBean.key1}"></h:inputText>
  <h:outputLabel value="#{dataBean.key1}"></h:outputLabel>
  <h:inputText  value="#{dataBean.key2}"></h:inputText>
  <h:outputLabel value="#{dataBean.key2}"></h:outputLabel>

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 2017-02-14
    • 2016-03-23
    • 2021-05-27
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多