jsf杂记

JSF杂记
1、 JSF的六个生命周期:
A、 恢复组件树(第一次访问时创建组件树,以后则从FacesContext中取出。在此阶段前后会产生阶段事件。)
注意:创建组件树不是没有数据的,而是有数据的,如果是多次访问,则它存的数据是上次请求的数据(如果上次进行了逻辑处理,就是处理后的数据)。
B、 应用请求值(将用户请求的数据更新到组件树中)
注意:a、在此阶段会产生动作事件和值改变事件。在此阶段执行完之后会向外广播这些事件,以便监听器能监测到。
b、如果immediate属性为true的话,动作事件和值改变事件会在此阶段之后被处理。然后跳过下面的阶段,到渲染响应阶段。
C、 数据转换和数据验证(先转换后验证,但是required验证是先做的。)
注意:a、如果在数据转换和数据验证上出错,会报转换错误或者验证错误,直接跳到渲染响应阶段了。
b、在数据验证通过后会产生本地值,即格式正确的值,以备下一步使用。
c、如果immediate属性为false的话,在此阶段完成之后会处理值改变事件。
D、更新模型值(将组件值转换后的本地值更新到bean和模型对象的属性上)
E、调用应用程序(调用具体的业务处理)
如果immediate为false,在此阶段后处理动作事件。
F、渲染响应(发送响应给用户,同时保存视图的状态以便用户再次请求时恢复视图)
2、如果一个UIViewRoot中有多个表单Form,则在提交某个Form时,上述的B、C阶段只针对所提交的Form做。
3、web.xml中配置的几个<context-param>参数(以Myfaces实现为例):
javax.faces.STATE_SAVING_METHOD
表示组件状态保存在客户端还是服务器端。可选参数值为:server, client.
javax.faces.CONFIG_FILES
在多个配置文件时,可以用这个参数指定配置文件,多个文件名之间用“,”分割。
org.apache.myfaces.ALLOW_JAVASCRIPT
为true表示组件允许JavaScript.
4、JSF中任何可以显示其子组件的组件,如HtmlDataTable和HtmlPanelGrid,都要求模板文本和被嵌套的非JSF标签位于<f:verbatim></f:verbatim>中。因为否则的话有可能不能正常显示。
5、不能在一个迭代其自身的标签中使用JSF标签,如在<c:forEach>中使用<h:inputText>.
6、不要在<c:if>中使用JSF 标签。如果这样用,
在上次条件成立时,组件被加载带组件树中,但是
如果下次条件不成立,则组件会被删除,它所包含的数值也会丢失。
推荐使用<h:panelGroup>,rendered属性为jsf 的EL表达式。这样,即使条件不成立,它只是不显示,不会被删除。相当于隐藏域。
7、不能使用JSTL或者JSP2.0表达式语言来引用托管bean。
8、对象的4种存活范围:none, request, session, application。
其中存活在none范围中的对象是指不在任何范围内,只是为其他对象的属性进行值绑定用的。
用值绑定表达式设置属性值的时候,受管bean不能引用生命周期比自己还短的对象。比如session中的对象不能引用request中的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值