我无法将参数传递给我可以实际使用的对话框。
我有一个命令按钮,该按钮设置为actionListener调用支持 bean 中的打开对话框方法
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
//...
options.put("includeViewParams", true);
Map<String, List<String>> params = new HashMap<>();
List<String> values = new ArrayList<>();
values.add("My String");
params.put("myParam", values);
PrimeFaces.current().dialog().openDynamic("test", options, params);
然后在我的测试页面中我给了
<f:metadata>
<f:viewParam name="myParam" value="#{testBean.testVal}" />
</f:metadata>
...
<h:outputText value="#{testBean.testVal}" />
并且字符串输出正常。
但是我想使用该值来执行数据库查找,但这不起作用。
private String myParam;
private List<Object> myThings;
@PostConstruct
public void init() {
myThings = service.lookup(myParam);
}
但在PostConstruct调用中 myParam 为空。
我添加了一些登录init和 getter 和 setter 并注意到我有
- 初始化 --> myParam null
- Getter --> myParam null
- Setter --> myParam = 传递的值
- Getter --> myParam = 传递的值
- Getter --> myParam = 传递的值
因此,该值似乎正在传递,但在PostConstuct方法触发之后。
我做错了什么还是应该以另一种方式做这件事?(我已经看到通过会话映射传递对象的参考,但是有没有办法让这个工作像这样?)