正确使用Facelet模板和复合组件

我仍然不确定正确使用JSF模板和复合组件。 我需要创建一个企业Web应用程序,它将拥有大量页面。 每个页面都有相同的标题,菜单,页脚,当然还有不同的内容(= JSF模板)。 每个页面上的内容将包含可重复使用的“框”(= JSF复合组件)。 这些盒子包括一些文件,按钮等。我的解决方案是否合适? 或者我应该使用其他技术,如自定义组件,装饰……?

layout.xhtml

            

customer_overview.xhtml:

         ...    

component_case_history.xhtml

       ...  

CustomerOverviewController.java

 @ManagedBean @ViewScoped public class CustomerOverviewController { public List getCases() { ... } } 

编辑2012-04-27

基于: 何时使用,标记文件,复合组件和/或自定义组件?

我认为我应该使用Facelet模板+ Facelet标签文件而不是Facelet模板+复合组件。

布局,模板

layout.xhtml:

每个页面都有相同的标题,菜单,页脚…

在这种情况下,您可以省略标题,菜单,页脚的ui:insert标记。

       

您可能还有一个ui:insert没有名称,所以如果您想进一步简化:

       

customer_overview.xhtml:

如果你有ui:在layout.xhtml中插入没有名字,你不需要ui:define here:

     ...  

您还应将模板放在用户无法直接访问的文件夹中(WEB-INF)。

可重复使用的“盒子”

您的复合组件之一如下所示:

  

没有任何属性的组件非常可疑。

  • 它有什么作用?
  • 显示用户名?
  • 如果你没有传递任何属性,它如何获得用户名?

组件应该是独立的,对于其他可重用的部件,请使用ui:insert。