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

标签 jsf

我正在尝试通用化一些 JSF 页面。所请求的功能之一是使它们与字段名无关——将字段名作为参数传递,而不是将它们绑定(bind)到支持 bean 中的特定 getter/setter。

因此,不要像这样绑定(bind)特定字段:

<custom:editor value="#{backingViewBean.editorValue}" />

...到像这样的后端方法:

public String getEditorValue() ...
public void setEditorValue(String editorValue) ...

...我正在尝试将其绑定(bind)到如下后端方法:

public String getFieldValue(String fieldName) ...
public void setFieldValue(String fieldName, String fieldValue) ...

是否有一些优雅的方法可以使用 value 属性来模仿 getter 和 setter 通常的行为?或者这种方法是否需要比这更复杂的方法?

最佳答案

对我来说,您似乎正在寻找一种方法来为 bean 内的所有变量设置一对 getter 和 setter,因此如果您要“惰性”它们来获取托管 bean 中的所有数据,您可以实现 java.util.Map 到 bean 中,然后您可以像这样覆盖 put 和 get 方法: 公共(public)类 DataBean 实现可序列化、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>

关于jsf - 我可以在 JSF 中的 Backing Bean 的 Getter 和 Setter 中添加额外的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668268/

相关文章:

java - JSF:在一个下拉列表中选择值会启用另一个下拉列表

java - 从 rich :ComponentControl in order to render rich:menuItems 传递 boolean 值时出现问题

java - 需要帮助使 MyBatis 能够处理糟糕的数据库设计

java - 为什么我在 JSF 获取 postgresql boolean 字段时总是得到 NULL?

JSF 设置默认值 Radio Button h :selectOneRadio

forms - 使用 GET 提交 JSF 表单

jquery - Primefaces 模态对话框位于 IE 中的媒体组件下方

jsf - 丰富 :comboBox default value selection

jsf - 在 Primefaces SelectOneMenu 中传递对象值

validation - 如何在不同的消息元素中显示相同输入字段的 ValidatorException 和所需的 ="true"