首先是JSF开发在页面编写上使用了.xhtml的后缀,在开发过程中需要托管bean和servlet的辅助,配置方式使用web.xml和faces-config.xml两个xml文档共同配置(目前学习到的是这样,希望了解深入的各位加以指正)
1.首先是servlet的配置,在web.xml下配置代码如下:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
2.关于faces-config.xml的配置
#这里总结一下自己碰到的情况,并不全面
a。关于validator的配置,validator可以在xml里配置也可以在编写java代码的时候使用如下方法:
- 通过实现javax.faces.validator.Validator接口创建一个验证器类。
- 实现上述接口的validate()方法。
- 使用注释@FacesValidator为自定义验证器分配唯一的ID。
@FacesValidator("ISBNValidator")----这样子就可以自动注册ID为ISBNValidator的验证器了
b。关于导航功能的配置:
配置导航规则
导航:是在一个button和超链接组件点击后要显示的下个页面的一套选择规则.
导航规则定义在应用配置资源文件中,每个导航规则指定怎样从一个页面导航到一套其他页面,JSF实现根据当前显示的页面来选择适当的导航.在适当的导航选定后,从当前页面选择访问到的下一个页面的机会依赖于在当前页面中组件被点击的时候调用的action方法,那个逻辑输出或由组件标记引用或由action方法所返回.
逻辑输出可以是开发者选择的任何东西,但也有一些常用的输出:
success 每个项都成功完成,继续下一个页面.
failure 某个项出了问题,继续到一个错误页面.
logon 用户被要求先登录,继续到等录页面.
no results 搜索没有找到任何项,回到搜索页.
通常,动作方法在本页的表单数据上执行一些处理,例如,那个方法检查表单中的用户名称和口令是否和文件中的一致,如果一致那个方法返回输出success,否则返回failure,例如:
<navigation-rule>
<from-view-id>/logon.jsp</from-view-id>
<navigation-case>
<from-action>#{LogonForm.logon}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/storefront.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{LogonForm.logon}</from-action>
<from-outcome>failure</from-outcome>
<to-view-id>/logon.jsp</to-view-id>
</navigation-case>
</navigation-rule>
正象这个例子所示,对于决定要访问的那个适当页面来说,用于处理那个动作的方法和返回的输出都是必须的.
这个导航规则定义从logon.jsp页面导航的可能路径,每个navigation-case元素定义一个从logon.jsp导航的可能路径,第一个navigation-case是说如果LogonForm.logon返回success输出,那么storefront.jsp页面将被处理;第一个navigation-case是说如果LogonForm.logon返回
failure的话logon.jsp会被渲染.
一个应用的导航配置由一套导航规则构成,每个规则都由faces-config.xml文件中的navigation-rule元素定义.
每个导航规则元素都对应到一个由可选的from-view-id元素定义的组件树标识符,这意味着在应用中每个规则定义了一个特定页面所有可能的导航路径,如果没有from-view-id元素,那么定义在navigation-rule元素中的导航规则应用到应用程序中的所有页面.from-view-id也允许通配符匹配模式.例如<from-view-id>/books/*</from-view-id>,就是说这个导航规则应用books目录中的所有页面.
navigation-rule元素可以包含0个或多个navigation-case元素,navigation-case元素定义一套匹配条件,当条件满足时,应用将导航到由包含在同一个navigation-case元素中的to-view-id元素定义的页面.
导航条件由可选的from-outcome 和 from-action元素定义,from-outcome定义逻辑输出,如success,from-action元素使用方法绑定表达式引用一个返回串的动作方法,那就是逻辑输出,这个方法执行一些逻辑来决定那个逻辑输出并返回它.
navigation-case检查元素输出和方法绑定表达式值的顺序是:
如果from-outcome value和from-action value都存在,如果动作方法返回不同的值那么这些元素都被使用,依赖于它执行的过程的结果.
如果只指定了from-outcome元素,则它必须匹配二者之一:要么是UI组件的action属性,要么是UI组件引用的方法的返回值.
如果只指定了from-action元素,则必须匹配组件标记指定的动作表达式的返回值.
有任何情况匹配,定义在to-view-id元素中的组件树将被选择来渲染。
c。关于converter(自定义转换器的配置)
<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>
//以上就是目前总结的内容,日后会根据学习进度进行更新