我搜索了类似的问题,但我有点困惑.我有一个登录页面,所以LoginBean也是;
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
private String password="";
private String image="";
@ManagedProperty(value = "#{loginBeanIdentityNr}")
private String identityNr="";
...
Run Code Online (Sandbox Code Playgroud)
成功后,导航到订单列表页面,所以我也有OrderBean.
@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);
...
}
Run Code Online (Sandbox Code Playgroud)
我不需要整个LoginBean,只需要ManagedProperty"loginBeanIdentityNr".但是下面这段代码不起作用(当然);
identityNr = (String) FacesContext.getCurrentInstance()
.getApplication().getELResolver()
.getValue(elContext, null, "loginBeanIdentityNr");
Run Code Online (Sandbox Code Playgroud)
这次它给我返回null.我想如果我需要整个bean属性,我可以注入这些bean,对吗?那么,你对这种方法有什么建议吗?可以<f:attribute>用吗?
Bal*_*usC 44
该@ManagedProperty声明JSF地方应设置属性的位置,不要在那里JSF应该"出口"的属性.你需要注入LoginBeanas属性OrderBean.
public class OrderBean {
@ManagedProperty(value="#{loginBean}")
private LoginBean loginBean; // +setter
// ...
}
Run Code Online (Sandbox Code Playgroud)
这样,您就可以访问它的OrderBean通过只是
loginBean.getIdentityNr();
Run Code Online (Sandbox Code Playgroud)
或者,如果您提出OrderBean请求或查看范围,则您也可以只设置该identityNr属性.
public class OrderBean {
@ManagedProperty(value="#{loginBean.identityNr}")
private String identityNr; // +setter
// ...
}
Run Code Online (Sandbox Code Playgroud)
与具体问题无关:String使用空字符串初始化属性是一种不好的做法.
| 归档时间: |
|
| 查看次数: |
39083 次 |
| 最近记录: |