0

我有一个请求范围的 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 编写了一个合成组件并将字段绑定到文本框和日历,我想访问 hashmap 中的字段并设置一些值:

#{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 有效,而对于其他两个常量, type 和 date 为 null !我在萤火虫中看到值已正确发送到服务器,但未设置地图内的字段!顺便说一句,我正在使用带有 ajax 的 primefaces 命令按钮将数据发送到服务器。

4

1 回答 1

1

最后我找到了问题所在。我有嵌套表格!!!一种包装我的复合组件的表单和一种我使用我的复合组件的表单!

于 2012-06-10T11:28:17.123 回答