Oli*_* J. 5 jsf managed java-ee jsf-2
由于这个BalusC帖子,我尝试在另一个托管bean中获取托管bean的实例:这里
使用findBean方法,它很棒,我检索我的bean,但ManagedProperty我无法得到我的bean.
我要注入的bean是这个:
@ManagedBean(name="locale")
@SessionScoped
public class LocaleBean {
private String locale;
public String getLocale() {
return locale;
}
public void setLocale(String locale) {
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(locale));
this.locale = locale;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,当我打电话给LocaleBean locale = findBean("locale");我的loginbean时,它的工作原理是:
@ManagedProperty("#{locale}") // OR localeBean, LocaleBean...
private LocaleBean locale;
Run Code Online (Sandbox Code Playgroud)
不起作用......
com.sun.faces.mgbean.ManagedBeanCreationException:Impossibledecréerlebeangéré«login».Lesproplèmessuivantsontétédétectés: - Lapropriété«locale»dubeangéré«login»n'existe pas.
告诉我为什么 ?
我看到你的 LocaleBean 是会话范围的。您可以使用 servlet 上下文的 getSessionMap 方法直接从代码中引用另一个会话范围的托管 Bean,而不是 @ManagedProperty 注释和 getter/setter:
LocaleBean locale = (LocaleBean) FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap().get("locale");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4638 次 |
| 最近记录: |