ELLO
我有2个Managed bean,一个是View作用域,另一个是作用域.View作用域bean定义为
@ManagedBean
@ViewScoped
public class InvoiceController implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value="#{invoiceService}")
private InvoiceService invoiceService;
Run Code Online (Sandbox Code Playgroud)
会话作用域为bean
@ManagedBean
@SessionScoped
public class InvoiceService implements Serializable{
Run Code Online (Sandbox Code Playgroud)
我正在使用会话范围的bean来保存一个标志,用于决定是否应该呈现一个面板,当我通过调试运行时,我发现每次我在sesison bean上调用该方法时,它都是一个新的bean实例因此不会在请求之间保留我的标志值.
我究竟做错了什么?
如果您@SessionScoped从javax.enterprise.context包中导入而不是从javax.faces.bean包中导入,则会发生这种情况.前者@Named仅适用于CDI bean,而后者@ManagedBean仅适用于JSF bean.
@ManagedBean没有任何有效范围的JSF 将默认为@NoneScoped这意味着它是在引用bean的每个EL表达式上新构造的,例如@ManagedProperty.这解释了您所看到的症状.
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |