有这样一个需求,从一个页面跳到另一个页面
actionListener="#{A_Bean.getParam}" styleClass="button_1" immediate="true">
/h:commandButton
我需要传递一个参数#{B_Bean.param}到后台A_Bean中,给了value,如下:
public void getParam(ActionEvent e)
{
System.out.println("getParam>>>>"+(String) e.getComponent().getAttributes().get("myParam"));
String value = (String) e.getComponent().getAttributes().get("myParam");
}
但控制台打印的是getParam>>>>null,也就是#{B_Bean.param}的值没传过来,这个值确定有;并且如果把#{B_Bean.param}换成一个字符串的话就可以传过去,请各位高手解释
跟JSF的bind机制有关系吧。
B的值bind到页面后,只有B可以观察到它。所以你的处理逻辑应该放到B中。
或者在页面Render以前就把B的值给A,让A去bind页面值。
#{B_Bean.param}显示打印下,若直接从bean里面取值要用这种方式
哥们,从你描述的来看,肯定是在按钮执行的时候#{B_Bean.param}值是不存在的,你可以打印印一下!
还有一种可能就是,jsf的按钮在单击时,有时间段,单击之前,单击之后,ation相应之后,等等,我想,#{B_Bean.param}在某个时段被修改了,为nulll了
在Controller层处理啊,不要在View层为不同的Bean交叉组装数据。感觉你们后台的数据结构设计有点不合理。