使用 Acegi 保护 Java 应用程序,第 5 部分: 保护 JSF 应用程序中的 JavaBean
2010-03-18 00:00:00 来源:WEB开发网清单 3 实际上演示了 JSF 的一个配置文件。它的根标签是 <faces-config>,这是大多数 JSF 程序员都熟悉的标签。根 <faces-config> 标签包含两个子标签,名为 <managed-bean> 和 <application>。现在我要详细解释这两个标签。
在 faces 配置文件中声明 bean 属性
清单 3 的 <managed-bean> 标签定义了 catalog bean 和它的属性。<managed-bean> 标签有三个子标签 — <managed-bean-name>、<managed-bean-class> 和 <managed-bean-scope> — 以及两个 <managed-property> 标签。前两个子标签分别定义了 bean 的名称(catalog)和类(sample.Catalog)。
清单 3 中的每个 <managed-property> 标签定义 catalog bean 的一个属性。每个 <managed-property> 标签有两个子标签 — <property-name> 和 <value> — 分别定义了属性的名称和值。从 清单 3 可以看出,第一个属性的名称是 publicData,它的值是 #{publicCatalog.data}。类似的,第二个属性的名称是 privateData,它的值是 #{privateCatalog.data}。
这两个值实际上是表达式,分别解析为其他托管 bean 的属性。第一个表达式(#{publicCatalog.data})商业智能 publicCatalog bean 的 data 属性。类似的,第二个表达式(#{privateCatalog.data})解析为 privateCatalog bean 的 data 属性。
JSF 提供了一种机制,能够将 #{publicData.data} 这样的表达式解析为实际的托管 bean 实例。我将会讨论 JSF 的表达式-解析(expression-resolving)机制(在 “定义表达式商业智能器” 小节)。
但是,这里有一个问题。清单 3 的 JSF 配置文件不包含名为 publicCatalog 和 privateCatalog 的托管 bean。我在 第 3 部分 的 “访问执行过代理的 Java 对象” 小节中配置了 publicCatalog 和 privateCatalog IOC bean(不是 JSF 托管 bean)。所以,JSF 表达式-解析机制必须能够解析为 Acegi 的 IOC bean。
更多精彩
赞助商链接