【发布时间】:2011-07-15 18:04:58
【问题描述】:
对 viewBean 的第一个“非回发”请求,sessionBean 中的 someValue 属性为空。 现在,在回发请求中,我将用户输入设置为 someValue。问题是 someValue 在任何“非回发”请求中始终为空。 这是我的代码:
@ManagedBean
@ViewScoped
public class ViewBean implements Serializable {
@ManagedProperty(value = "#{sessionBean}")
private SessionBean sessionBean;
private String inputText;
@PostConstruct
public void init() {
if (sessionBean.getSomeValue() != null) // ALWAYS NULL
doSomething(sessionBean.getSomeValue());
}
private void doSomething(String s) {}
public void action(final ActionEvent ae) {
sessionBean.setSomeValue(getInputText());
doSomething(getInputText());
}
GETTERS/SETTERS
}
@ManagedBean
@SessionScoped
public class SessionBean implements Serializable {
private String someValue;
GETTER/SETTER
}
我觉得我做错了什么。我正在使用 Mojarra 2.1.2 任何建议表示赞赏。谢谢。
更新: 在两种方法(init 和 action)上使用 evaluateExpressionGet 效果很好:
FacesContext context = FacesContext.getCurrentInstance();
SessionBean sessionBean = context.getApplication().evaluateExpressionGet(context,
"#{sessionBean}", SessionBean.class);
【问题讨论】:
标签: jsf-2