日期:2014-05-16 浏览次数:20440 次
一 执行JSF配置是应用架构师的责任,包括: l 向应用注册后端对象以使应用的任何部分都能访问它们. l 配置支持bean和模型bean,以使在页面开始引用它们时能够用适当的值实例化. l 定义应用中每个页面的导航规则,使应用有一个连续的页面流. l 打包所有页面对象以及其它文件,使应用能发布到任何兼容的容器. 二 应用配置资源文件 JSF技术为配置资源提供一个轻便的配置格式:XML文档.应用架构师创建一个或多个称为应用配置资源的文件,使用这个格式注册并配置对象以及定义导航规则.一个应用配置资源文件通常称为faces-config.xml,这些xml文档不仅要良构,而且还必须合法. 应用可以有多个应用配置资源文件,JSF实现用这样的顺序查找这些文件: l 在父类装载器中以及在web应用的/WEB-INF/lib/里的任何JAR文件中的命名为/META-INF/faces-config.xml的资源,如果带有这个名字的资源存在就作为配置资源装入.这种方式实际上是为已经打包的包含一些组件和渲染器的库准备的. l 一个初试化参数javax.faces.application.CONFIG_FILES,它指定一个或多个用逗号分隔的web应用多个配置文件的路径.这种方式乐见于可伸缩的企业级应用. l 一个在应用的/WEB-INF/目录下的命名为faces-config.xml的资源,这是使应用的配置文件可用的最简单方式. 要访问已经向应用注册的资源,应用开发者要使用Application类的实例,它被每个应用自动创建.Application类实例扮演了在XML文件中定义的资源的中心工厂的角色.应用启动时,JSF实现就创建Application类的单个实例并且用应用配置资源文件中的配置信息配置它. 三 配置支持Bean. 要实例化在JSF应用中使用的支持bean 并在作用域里存储他们,你使用可管理bean创建设施.这个设施配置在应用配置资源文件中,它使用可管理XML元素来定义每个bean.这个文件在应用启动时配置.当页面引用一个bean时,JSF实现根据应用配置资源文件中的配置来实例化它. 使用这个设施,你能: l 在一个整个应用的中心文件中创建bean,而不是有条件的在整个应用中创建bean. l 不用任何附加代码自定义组件的属性. l 当创建可管理bean时直接用配置文件中的值来自定义bean属性值. l 使用value元素,设置一个可管理bean的属性到另一个值绑定表达式的计算结果. 下面将具体介绍如何使用可管理bean创建设施实例化支持bean. 使用managed-bean元素. 使用这个元素创建bean,它代表一个必须在应用中的bean类的实例.运行时,JSF实现处理这个managed-bean元素,如果一个页面引用这个bean,而这个bean还没有实例存在,则JSF则根据这个元素的定义创建它. <managed-bean> <managed-bean-name>NA</managed-bean-name> <managed-bean-class>model.ImageArea</managed-bean-class> <managed-bean-scope>application</managed-bean-scope> <managed-property> <property-name>shape</property-name> <value>poly</value> </managed-property> ... </managed-bean-name> </managed-bean> managed-bean-scope 元素定义bean要存储到的作用域,有4个值:none, request, session, or application. 如果是none,那么bean在每次引用时都要重新创建,不保存到任何作用域对象中,使用这个值的情况是,一个可管理bean引用了另一个bean,这另一个bean就使用none.如果使用了UI组件标记的binding属性来绑定一个支持bean,则这个bean要用request,如果要用session或application来替换request,则要注意线程安全. managed-bean元素包含0个或多个managed-property元素,每个对应bean类中定义的属性。这些元素用来初始化bean属性的值.如果你不想初始化一个属性值,只需要在应用配置资源文件中不包含这个属性managed-property定义即可. 如果一个可管理bean不包含其它可管理bean元素,它能包含一个map-entries或list-entries元素,map-entries元素配置一套Map实例,list-entries元素配置一套List实例.要影射定义在managed-property元素中的属性,必须确保在组件标记的value表达式中的点后的部分匹配managed-bean元素中的property-name元素. 四 注册消息资源 <application> <message-bundle> resources.ApplicationMessages </message-bundle> <locale-config> <default-locale>en</default-locale> <supported-locale>es</supported-locale> <supported-locale>de</supported-locale> <supported-locale>fr</supported-locale> </locale-config> </application> 五 注册自定义查核器 <validator> ... <validator-id>FormatValidator</validator-id> <validator-class> validators.FormatValidator </validator-class> <attribute> ... <attribute-name>formatPatterns</attribute-name> <attribute-class>java.lang.String</attribute-class> </attribute> </validator> 六 注册自定义转换器 <converter> <description> Converter for credit card numbers that normalizes the input to a standard format </description> <converter-id>CreditCardConverter</converter-id> <converter-class> converters.CreditCardConverter </converter-class> </converter> 七 配置导航规则 导航:是在一个button和超链接组件点击后要显示的下个页面的一套选择规则. 导航规则定义在应用配置资源文件中,每个导航规则指定怎样从一个页面导航到一套其他页面,JSF实现根据当前显示的页面来选择适当的导航.在适当的导航选定后,从当前页面选择访问到的下一个页面的机会依赖于在当前页面中组件被点击的时候调用的action方法,那个逻辑输出或由组件标记引用或由action方法所返回. 逻辑输出可以是开发者选择的任何东西,但也有一些常用的输出: success 每个项都成功完成,继续下一个页面. failure 某个项出了问题,继续到一个错误