首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从JSF中的另一个bean获取managedbean属性

如何从JSF中的另一个bean获取managedbean属性
EN

Stack Overflow用户
提问于 2011-05-15 03:29:14
回答 1查看 40.4K关注 0票数 17

我搜索了类似的问题,但我有点困惑。我有一个登录页面,所以LoginBean也是;

代码语言:javascript
复制
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {    
    private String password="";
    private String image="";
    @ManagedProperty(value = "#{loginBeanIdentityNr}")
    private String identityNr="";
...

成功后,导航到orderlist页面,所以我也有OrderBean。

代码语言:javascript
复制
@ManagedBean(name = "OrderBean")
@SessionScoped
       public class OrderBean {
            List<Ordery> sdList;

            public List<Order> getSdList() {

                try {

                    String identityNr ="";
                    ELContext elContext = FacesContext.getCurrentInstance().getELContext();
                    LoginBean lBean = (LoginBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "loginBean");
                    identityNr =lBean.getIdentityNr();
                    sdList = DatabaseUtil.getOrderByIdentityNr(identityNr);
    ...
    }

我不需要整个LoginBean,只需要ManagedProperty "loginBeanIdentityNr“。但是下面的代码不能工作(当然);

代码语言:javascript
复制
identityNr = (String) FacesContext.getCurrentInstance()
                        .getApplication().getELResolver()
                        .getValue(elContext, null, "loginBeanIdentityNr");

这一次,它向我返回null。我想如果我需要整个bean属性,我可以注入这些bean,对吧?那么,你对这种方法有什么建议吗?可以使用<f:attribute>吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-15 03:30:40

@ManagedProperty声明了JSF应该设置属性的位置,而不是JSF应该“导出”属性的位置。您只需将LoginBean作为OrderBean的属性注入即可。

代码语言:javascript
复制
public class OrderBean {

    @ManagedProperty(value="#{loginBean}")
    private LoginBean loginBean; // +setter

    // ...
}

这样,您就可以在OrderBean中访问它,只需

代码语言:javascript
复制
loginBean.getIdentityNr();

或者,如果将OrderBean请求或视图设置为作用域,则还可以仅设置identityNr属性。

代码语言:javascript
复制
public class OrderBean {

    @ManagedProperty(value="#{loginBean.identityNr}")
    private String identityNr; // +setter

    // ...
}

无关的具体问题:使用空字符串初始化String属性是一种糟糕的做法。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6004309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档