【发布时间】:2011-01-08 14:17:04
【问题描述】:
有什么方法可以将JSF托管bean的值存储在simple bean中以便在JSP页面中访问?
【问题讨论】:
有什么方法可以将JSF托管bean的值存储在simple bean中以便在JSP页面中访问?
【问题讨论】:
您添加到页面、请求、会话或应用程序范围的任何 bean 都可用于 JSP。您只需要在服务器端有一个可以访问这些范围的组件即可为您添加它。
【讨论】:
如果您需要以编程方式来自 JSF 托管 bean 的值,您可以使用如下内容:
FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
ValueExpression ve = context.getApplication().getExpressionFactory().createValueExpression(elContext, expresssion, Foo.class);
Foo foo = (Foo) ve.getValue(elContext);
表达式类似于#{myBean.someValue}。
现在这个 foo 可以存储在任何其他可以存储在任何范围内的 bean 中,或者 foo 可以直接存储在某个范围内。
当然,上面显示的代码片段需要在 JSF 上下文中执行。如果 JSP 页面在 JSF 上下文中执行,您可以也将片段作为 scriptlet 放置在 JSP 页面上。这将是一个非常糟糕的做法,但对于一些快速破解它可能是一种解决方法。
【讨论】: