使用 Acegi 保护 Java 应用程序,第 5 部分: 保护 JSF 应用程序中的 JavaBean
2010-03-18 00:00:00 来源:WEB开发网定义表达式解析器
JSF 的 javax.faces.el.VariableResolver 类是默认的表达式解析器,能够将表达式解析为 JSF 的托管 bean。但是,VariableResolver 不能解析为 IOC bean。
JSF 提供了一种扩展机制,允许应用程序开发人员编写自己的表达式解析器。Spring 在名为 org.springframework.web.jsf.DelegatingVariableResolver 的类中提供了 JSF 表达式解析器。DelegatingVariableResolver 类能够将表达式解析为 IOC bean。DelegatingVariableResolver 也用默认的 VariableResolver 将表达式解析为 JSF 托管 bean。
要使用 Spring 的 DelegatingVariableResolver,必须在 JSF 的配置文件中配置它。这正是在 清单 3 中包含 <application> 标签的目的(清单 4 显示了这个标签,用于快速参考):
清单 4. <application> 标签
<faces-config>
..........
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
</faces-config>
清单 4 中的 <application> 标签只包含一个子标签,名为 <variable-resolver>,用于为 JSF 应用程序配置外部解析器。<variable-resolver> 标签包装了 Spring 解析器类的名称(org.springframework.web.jsf.DelegatingVariableResolver),负责将表达式解析为 IOC bean。
实现 JSF 和 IOC bean
前面已经看到了如何配置 JSF 应用程序以使用 Acegi 的 IOC bean。现在可以看看刚刚配置的三个 bean。
更多精彩
赞助商链接