【发布时间】:2014-06-30 18:55:25
【问题描述】:
我有两个 ManagedBeans(SessionHandler 和 OrderHandler)。两者都是会话范围的。
SessionHandler:
@ManagedBean(name="session")
@SessionScoped
public class SessionHandler {
private Account account;
public String login() {
try {
// ... login method ...
return("bookinglist.xhtml?faces-redirect=true");
}
catch (Exception e) {
// ... exception handling ...
}
}
// ... getter & setter ...
}
订单处理程序:
@ManagedBean(name="order")
@SessionScoped
public class OrderHandler {
@ManagedProperty(value="#{session.account}")
Account account; // getter and setter
public OrderHandler() {
this.createList();
}
private void createList() {
// method creates an ArrayList of bookings
// it uses this.account.getId() for a SQL statement
}
}
在 bookinglist.xhtml 我想显示欢迎文本和我的列表:
<p>Welcome, #{sessions.account.name}!</p>
<ui:repeat value="#{order.bookingList}" var="item">
<!-- ... items ... --->
</ui:repeat>
显示欢迎文本,但我的列表为空,因为在我的 sql 语句中 accountID 为空。 accountID = 1 的语句(例如)有效。在预订过程的后期,我可以使用 accountID(无需重新声明或覆盖它)。
我想问题是,该属性在登录后无法立即使用......但我不知道为什么。有人可以帮我吗?
【问题讨论】:
-
制作“OrderHandler”
@RequestScoped怎么样? -
无效...而且我需要 OrderHandler 为其他方法的 SessionScoped。
标签: jsf managed-bean myfaces