ui:JSF中的组合和节省

时间:2013-08-14 10:59:28

标签: jsf-2 facelets

我在使用< ui:composition>时遇到了一些麻烦在xhtml页面(main.xhtml)中。 Main.xhtml和ui:composition都使用单独的viewscoped bean(mainbean,compositebean)来绑定属性。有一个< h:commandbutton>在ui:组合页面;

  1. 当我单击此命令按钮时,将调用compositebean的prerender方法,但未调用action方法。但是当mainbean被设置为sessionscoped bean时,它起作用了。为什么会这样?

  2. &lt; ui:composition&gt;的src属性是从视图结构的托管bean属性动态绑定:<ui:include src="#{mainbean.linkURL}" id="composite"/>。但是当我硬编码ui:composition的src属性时,&lt; h:commandbutton&gt;正确调用了操作方法:<ui:include src="composite.xhtml"/>

  3. 如果没有在web.xml中指定javax.faces.STATE_SAVING_METHOD,这将是默认的状态保存机制?

1 个答案:

答案 0 :(得分:2)

1和2的回答是<ui:include>是标签处理程序,而不是UI组件。这在JSTL in JSF2 Facelets... makes sense?中进一步阐述。简而言之:标签处理程序在视图构建时运行,而UI组件在视图渲染时运行。这与<ui:composition>和朋友完全无关。

3在JSF specification的第11.1.3章中得到了回答。这是一个copypaste:

  
      
  • javax.faces.STATE_SAVING_METHOD - 保存状态信息的位置。有效值是   “server”(通常保存在HttpSession中)和“client(通常在后续表单中保存为隐藏字段)   提交)。如果未指定,则必须使用默认值“server”。
  •