layout:gridLayout与h:panelGrid类似,可以把包含其中的子元素按照一定规则放到网格中。但是GridLayout可以把任意复杂的内容放到网格中,每一块复杂内容由Facelet提供,因此解决了h:panelGrid的两个限制:一是每个单元格只能放一个构件;二是单元格中内容不能来自于外部文件。
表 31.19. 构件信息
| Component Type | org.operamasks.faces.layout.GridLayout |
| Component Family | org.operamasks.faces.layout.LayoutManager |
| Component Class | org.operamasks.faces.component.layout.GridLayout |
| Tag Class | org.operamasks.faces.webapp.layout.GridLayoutTag |
| Renderer Type | org.operamasks.faces.layout.GridLayout |
| Renderer Class(AJAX) | org.operamasks.faces.render.layout.ajax.AjaxGridLayoutRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++org.operamasks.faces.component.layout.LayoutManagerSupport
+++++org.operamasks.faces.component.layout.GridLayout
表 31.20. 属性
| bgcolor | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格的背景色 | ||||
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| border | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格边框的大小 | ||||
| captionClass | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格标题的CSS风格类名 | ||||
| captionStyle | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格标题的CSS风格 | ||||
| cellpadding | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格边框与框内内容的间距 | ||||
| cellspacing | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格边框之间的间距 | ||||
| columnClasses | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格列的CSS风格类名列表,列表内的类名以逗号隔开 | ||||
| columns | 定义类 | |||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格的列数 | ||||
| dir | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 文本的对齐方式,可选值有LTR(左对齐)和RTL(右对齐) | ||||
| footerClass | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格页脚的CSS风格类名 | ||||
| frame | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格边框的显示 | ||||
| headerClass | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格页眉的CSS风格类名 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| lang | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 属性值和文本内容所使用的语言 | ||||
| onclick | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onclick事件,使用设备(一般来说是鼠标)单击构件时触发 | ||||
| ondblclick | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| ondblclick事件,使用设备(一般来说是鼠标)双击构件时触发 | ||||
| onkeydown | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onkeydown事件,按下设备(键盘)按钮时触发 | ||||
| onkeypress | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onkeypress事件,按下设备(键盘)按钮并释放时触发 | ||||
| onkeyup | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onkeyup事件,释放设备(键盘)按钮时触发 | ||||
| onmousedown | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onmousedown事件,在构件上按下鼠标时触发 | ||||
| onmousemove | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onmousemove事件,鼠标在构件上移动是触发 | ||||
| onmouseout | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onmouseout事件,鼠标移出构件时触发 | ||||
| onmouseover | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onmouseover,鼠标移到构件上时触发 | ||||
| onmouseup | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| onmouseup事件,释放鼠标时触发 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| rowClasses | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格行的CSS风格类名列表,列表内的类名以逗号隔开 | ||||
| rules | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格分隔线的显示 | ||||
| style | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件渲染时应用到构件的CSS风格,对应于元素的style属性 | ||||
| styleClass | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 空格分隔的CSS风格类名列表,渲染时作为元素的"class"属性 | ||||
| summary | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定网格的摘要,由于summary不会显示在浏览器中,所以尽可能的使摘要详尽,这样更有利于那些通过“听”的浏览者了解你的网格 | ||||
| title | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 为构件提供的提示信息 | ||||
| width | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定构件的宽度 | ||||
以下的例子介绍了layout:gridLayout标签的一些常用的用法,它定义了一个列数为2且只显示行与行之间的分隔线的网格,网格的行样式会在row1与row2两个CSS类之间循环变换。
<layout:gridLayout columns="2" rules="rows" rowClasses="row1,row2">
<layout:faceletSet id="contentDemo">
<layout:facelet name="cell1">Replaced Cell 1</layout:facelet>
<layout:facelet name="cell2">Replaced Cell 2</layout:facelet>
<layout:facelet name="cell3">Replaced Cell 3</layout:facelet>
<layout:facelet name="cell4">Replaced Cell 4</layout:facelet>
<layout:facelet name="cell5">Replaced Cell 5</layout:facelet>
<layout:facelet name="cell6">Replaced Cell 6</layout:facelet>
</layout:faceletSet>
</layout:gridLayout>由于layout:gridLayout网格中的每一块复杂内容由Facelet提供,对Facelet、FaceletSet不了解的读者可参考帮助文档中对layout:facelet、layout:faceletSet标签的说明。