【发布时间】:2015-04-15 12:10:33
【问题描述】:
我对 JSF、CDI 项目有疑问。我做了很多研究,发现在 CDI 中没有 @ViewedScoped 注释。我用对话框解决了基于 ajax 的页面的问题。我想将变量从数据表传递给对话框。为此,我不能使用@RequestedScoped bean,因为在请求结束后值被丢弃。谁能帮我解决它?我不能使用@SessionScoped,但恕我直言,这是一种不好的做法。或者也许只将这一个变量保存到知道的会话中。你们能给我一些提示如何优雅地解决这个问题吗?
import javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class ServiceBean implements Serializable {
...
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class SomeBean {
@Inject
ServiceBean serviceBean;
@Postconstruct ...
这是错误信息:
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean warDetailBean
【问题讨论】:
-
使用 CDI bean 或 JSF bean。不要不必要地考虑混合它们,
-
"我做了很多研究,发现在 CDI 中没有
@ViewedScoped注释。" 这仅在 Java EE 7 之前是正确的。Java EE 7 (JSF 2.2) 透明地支持 JSF 视图范围(来自javax.faces.bean.ViewScoped)的兼容视图范围(来自javax.faces.view.ViewScoped)。
标签: jsf jsf-2 cdi view-scope