31.9. <layout:groupTabLayout>

groupTabLayout提供对TabLayout中页签进行分组的功能,它页签长在左侧,多个页签可以归组,每组可以收起和展开。

31.9.1. 构件信息

表 31.21.

Component Typeorg.operamasks.faces.component.layout.impl.UIGroupTabLayout
Component Familyorg.operamasks.faces.component.layout.impl.UIPanel
Component Classorg.operamasks.faces.component.layout.impl.UIGroupTabLayout
Tag Classorg.operamasks.faces.webapp.layout.UIGroupTabLayoutTag
Renderer Typeorg.operamasks.faces.component.layout.impl.UIGroupTabLayout
Renderer Class(AJAX)org.operamasks.faces.render.layout.ajax.AjaxGroupTabLayoutRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.layout.base.UIPanelBase

+++++org.operamasks.faces.component.layout.impl.UIPanel

++++++org.operamasks.faces.component.layout.impl.UILayout

+++++++org.operamasks.faces.component.layout.base.UITabLayoutBase

++++++++org.operamasks.faces.component.layout.impl.UITabLayout

+++++++++org.operamasks.faces.component.layout.base.UIGroupTabLayoutBase

++++++++++org.operamasks.faces.component.layout.impl.UIGroupTabLayout

31.9.2. 属性

表 31.22. 属性

activeGroup 定义类 org.operamasks.faces.component.layout.impl.UIGroupTabLayout
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
初始时激活的group序号
animCollapse 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
在构件收缩时是否显示动画效果
animFloat 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否允许面板收缩/展开的激活. 当点击一个收缩区域的bar时,这个区域的面板就会显示成一个浮动的面板,并且当鼠标移开该区域(或者在autoHide被设置成false时,点击面板外的地方)时,面板会收缩。把animFloat设置成false可以阻止面板收缩/展开的激活 (默认值:true)
autoHeight 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否允许构件自适应高度(默认值: false).
autoHide 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
鼠标移开浮动面板时面板是否自动收缩 (默认值:true)
autoWidth 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否允许构件自适应宽度 (默认值:false)
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
bodyStyle 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
容器内元素使用的CSS样式
border 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否显示面板body元素的边框(默认值:true)。默认情况下,边框是一个2px宽的内嵌边框,但当bodyBorder属性被设置成false时可以进一步修改
colspan 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件占据的列数
columnWidth 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
构件宽度的百分比小数值
fit 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否充满父容器
floating 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
面板是否漂浮 (默认值:false)
groupWidth 定义类 org.operamasks.faces.component.layout.impl.UIGroupTabLayout
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
每个group的宽度
height 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件高度的像素值 (默认是auto)
hideBorders 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否隐藏边框。为true时隐藏内部构件的边框, 为false时适应内部构件的边框设置 (默认值:false).
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
initConfig 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
初始化配置对象。取值可以是ExtConfig对象, 或String,表示一个JavaScript对象,比如:{"a": "avalue", "b":true, "c":200, "d":"var::dvalue"} 如果取值是表示一个JavaScript对象的String,则key必须用(双)引号包起来,比如"a"。
jsvar 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名
maskDisabled 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
在面板disabled时,是否用直观的方式标识 (默认值:true)
onbeforeexpand 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件展开前执行的JavaScript代码
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
rowspan 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件占据的行数
shadow 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否显示阴影效果.该属性仅在floating属性被设置成true时有效
shadowOffset 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
阴影偏离的像素数 (默认值:4).该属性仅在floating属性被设置成true时有效
shim 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否在需要的时候enable内框架边界 (默认值:true). 该属性仅在floating属性被设置成true时有效
showTitleOnCollapse 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
在构件收缩后是否显示标题 (默认值:false). 注意:该属性仅在region="north"或者region="south",属性被设置成true时有效
style 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染时应用到构件的CSS风格,对应于元素的style属性
styleClass 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
空格分隔的CSS风格类名列表,渲染时作为元素的"class"属性
toolBarPosition 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
内置工具栏的位置,可能的取值为"top","bottom",或"both"。
width 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件宽度的像素值 (默认是auto)
x 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件左边界距离父容器左边界的像素数
y 定义类 org.operamasks.faces.component.layout.impl.UIPanel
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件上边界距离父容器上边界的像素数

31.9.3. 示例

下面的示例演示了分组页签的使用方法,layout:groupTabLayout布局的子标签是layout:groupTabPanel,其负责容纳各个layout:panel.

<layout:groupTabLayout activeGroup="1" tabWidth="130" fit="true" style=" border: 0px solid red;">
			<layout:groupTabPanel mainItem="0">
				<layout:panel title="公司信息" autoScroll="true" onactivate="gridJsvar.syncSize();"   >
					<w:dataGrid id="grid"  jsvar="gridJsvar" paged="true" rows="10" width="800" height="400" >
						<w:outputColumn id="id" hidden="true" hidable="false" />
						<w:outputColumn id="name" align="center" sortable="true" header="公司" />
						<w:outputColumn id="leadingProduct" header="主打产品" />
						<w:outputColumn id="address" header="地址" />
						<w:outputColumn id="phone" header="联系电话" />
						<w:outputColumn id="homepage" header="公司主页" />
						<w:pagingToolbar displayInfo="true" displayMsg="显示 {0} - {1},共 {2} 条" />
					</w:dataGrid>
				</layout:panel>
				<layout:panel title="员工信息" onactivate="employeeGridJsvar.syncSize();" autoScroll="true"  >
					<w:dataGrid id="employeeGrid" jsvar="employeeGridJsvar" paged="true" rows="10" width="800" height="400" >
						<w:outputColumn id="id" hidden="true" hidable="false" />
						<w:outputColumn id="departmentId" hidden="true" hidable="false" />
						<w:outputColumn id="name" width="200" align="center" sortable="true" header="名称" />
						<w:outputColumn id="companyName" width="300" header="所在公司名称" />
						<w:outputColumn id="departmentName" header="所在部门名称" />
					</w:dataGrid>
				</layout:panel>
			</layout:groupTabPanel>
			<layout:groupTabPanel mainItem="1"  >
				<layout:panel title="title3"  jsvar="panel3" url="caseinfo/groupTabsLayout_detail.xhtml"  >
				</layout:panel>
				<layout:panel title="title4"  jsvar="panel4" >这是title4的内容</layout:panel>
			</layout:groupTabPanel>
		</layout:groupTabLayout>

ManagedBean:

@ManagedBean(name = "ux.layout.groupTabsLayoutBean", scope = ManagedBeanScope.REQUEST)
public class GroupTabsLayoutBean {
    @ManagedProperty("#{companyService}")
    private CompanyService companyService;
    @ManagedProperty("#{employeeService}")
    private EmployeeService employeeService;
    @ManagedProperty("#{departmentService}")
    private DepartmentService departmentService;
    @Bind(id = "grid")
    private List<Company> getCompanys() {
        return companyService.findAll();
    }
    @SaveState
    private List<Employee> employees;
    @Bind(id = "employeeGrid")
    private List<Employee> getEmployess() {
        return employees;
    }
    @BeforeRender
    public void beforeRender(boolean isPostback) {
        if (!isPostback) {
            employees = employeeService.findAll();
            for (Employee employee : employees) {
                Department department = departmentService.findById(employee.getDepartmentId());
                employee.setDepartmentName(department.getName());
                employee.setCompanyName(companyService.findById(department.getCompanyId())
                        .getName());
            }
        }
    }
}