JSF和JSP bean通信

时间:2011-01-08 14:17:04

标签: jsp jsf

我们可以通过哪种方式将JSF托管bean的值存储在简单bean中以便在JSP页面中访问?

2 个答案:

答案 0 :(得分:1)

您添加到页面,请求,会话或应用程序范围的任何bean都可供JSP使用。您只需要服务器端的一个组件,可以访问这些范围,然后为您添加它。

答案 1 :(得分:1)

如果您需要以编程方式从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页面上。这将是一个非常糟糕的做法,但对于一些快速破解,它可能是一种解决方法。