使用 Acegi 保护 Java 应用程序,第 5 部分: 保护 JSF 应用程序中的 JavaBean
2010-03-18 00:00:00 来源:WEB开发网清单 2 使用了两个 JSF <outputText> 标签。第一个 <outputText> 标签有一个 #{catalog.publicData} 的 value 属性,第二个标签有一个 #{catalog.privateData} 的 value 属性。这两个标签使用 catalog bean 的 publicData 和 privateData 属性,它们分别提供公共和私有的编目数据。
在 第 3 部分 的 “访问执行过代理的 Java 对象” 小节中,我配置了两个 Acegi bean,分别名为 publicCatalog 和 privateCatalog。现在我要将第 3 部分的 publicCatalog bean(不受保护的供公共访问的 bean)映射到 catalog bean 的 publicData 属性。类似的,将第 3 部分的 privateCatalog(在 第 3 部分 的清单 3 中配置的受保护且执行过代理的 bean)映射到上面 清单 2 的托管 bean catalog 的 privateData 属性。映射完成后,catalog bean 就会充当 JSF 编目应用程序的公共和私有数据的包装器。
定义托管 bean
清单 3 演示了如何定义 catalog bean,以便将它的 publicData 和 privateData 属性分别映射到 Acegi 的 publicCatalog 和 privateCatalog bean:
清单 3. 将 catalog 的属性映射到 Acegi 的 bean
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>catalog</managed-bean-name>
<managed-bean-class>sample.Catalog</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>publicData</property-name>
<value>#{publicCatalog.data}</value>
</managed-property>
<managed-property>
<property-name>privateData</property-name>
<value>#{privateCatalog.data}</value>
</managed-property>
</managed-bean>
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
</faces-config>
更多精彩
赞助商链接