JSF 2 复合组件让我们能轻松的将视图中的某一小块提取出来放进一个独立的文件当中作为一个可重用可配置的组件使用。
要使用复合组件,需要在<html>中使用”xmlns:组件包名”属性声明一个名称空间。此名称空间通常为 http://java.sun.com/jsf/composite 外加目录名,这个目录就是 resources 目录下组件所在的目录名。组件包名可以自己定义,组件名是其声明的目录下 XHTML 文件的名字,只不过没有 .xhtml 扩展名。也就是说,我可以将resources 目录下ezcomp目录声明为一个组件包,声明方法是:<html xmlns:util=http://java.sun.com/jsf/composite/ezcomp>,ezcomp目录下的login.xhtml文件即为一个login组件,则可以在视图中这样使用该组件:<util:login … />。
且看示例:
Ezcomp目录下的login.xhtml文件:
使用组件的index.xhtml
login组件定义包含两节:<composite:interface> 和 <composite:implementation>。<composite:interface> 节定义了一个界面,说明该组件标签所具有的属性,可用来配置此组件。<composite:implementation>节定义了组件的呈现方式,它使用 #{cc.attrs.ATTRIBUTE_NAME} 表达式来访问组件的界面内定义的属性。(cc 是 JSF 2 表达式语言中的保留关键字,代表的是复合组件。)
使用组件的方式如前面所叙述的,较为简单,申明空间,然后加入组件标签,并设置标签属性。
注意:组件所在目录的名称建议就使用ezcomp名称,否则可能netbeans会报错。