31.8. <layout:gridLayout>

layout:gridLayout与h:panelGrid类似,可以把包含其中的子元素按照一定规则放到网格中。但是GridLayout可以把任意复杂的内容放到网格中,每一块复杂内容由Facelet提供,因此解决了h:panelGrid的两个限制:一是每个单元格只能放一个构件;二是单元格中内容不能来自于外部文件。

31.8.1. 构件信息

表 31.19. 构件信息

Component Typeorg.operamasks.faces.layout.GridLayout
Component Familyorg.operamasks.faces.layout.LayoutManager
Component Classorg.operamasks.faces.component.layout.GridLayout
Tag Classorg.operamasks.faces.webapp.layout.GridLayoutTag
Renderer Typeorg.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.8.2. 属性

表 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)
是否必须 延时求值
指定构件的宽度

31.8.3. 构件API

31.8.4. 示例

以下的例子介绍了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标签的说明。