使用 jsf 在 HashMap 中绑定字段时为 null 值



我有一个请求范围的CDI管理bean(也尝试过jsf管理的bean,但同样的问题!

@Named
@RequestScoped
public class myController{
private HashMap<String, MyModel> modelMap;
@PostConstruct
private void init() {
  logModelMap = new HashMap<String, MyModel>();
  logModelMap.put("CONSTANT_1", new MyModel());
  logModelMap.put("CONSTANT_2", new MyModel());
  logModelMap.put("CONSTANT_4", new MyModel());
}
public HashMap getModelMap() {
   return logModelMap;
}
}

和MyModel类,这是一个简单的pojo:

public class MyModel{
private String type = "";
private Date date;
//constructor, getter and setter methods
}

我已经使用 jsf 编写了一个合成组件并将字段绑定到文本框和日历,我想访问哈希图中的字段并设置一些值:

#{myController.modelMap['CONSTANST_1'].type}
#{myController.modelMap['CONSTANST_1'].date}
#{myController.modelMap['CONSTANST_2'].type}
#{myController.modelMap['CONSTANST_2'].date}
#{myController.modelMap['CONSTANST_3'].type}
#{myController.modelMap['CONSTANST_3'].date}

但是只有constant_1工作和其他两个常量的前两行,类型和日期是空的!我在Firebug中看到值已正确发送到服务器,但未设置地图中的字段!顺便说一下,我正在使用带有ajax的primefaces命令按钮将数据发送到服务器。

终于,我找到了问题所在。我有嵌套表单!!一个表单包装我的复合组件,另一个表单我使用复合组件!

最新更新