我正在开发一个 JSF 页面,其中包含一个包含大量输入字符串值的表单。我不想在 bean 中为每个 input 创建相应的字段。是否可以使用地图代替。
这是我希望表单输入元素的样子:
<h:inputText value='#{myBean.data["key"]}' /> // or something like this
并且 bean 包含如下映射:
class myBean {
Map data;
...
}
如果我创建这样的代码,地图操作的 getter 和 setter 应该是什么样的?
没什么特别的。只是一个标准的 getter,因为您应该始终将其用于模型属性。
public Map<String, Object> getData() {
return data;
}
setter 不是强制性的,因为它无论如何都不会被使用。EL 将为此使用地图自己的put()
方法。您只需要确保地图已经在 bean 的(后)构造函数中预先创建,JSF/EL 不会为您执行此操作。
public MyBean() {
data = new HashMap<String, Object>();
}