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中的对象。

你可能感兴趣的:(JavaScript,C++,bean,应用服务器,JSF)