30.65. <w:toolBar>

初次接触ToolBar的用户可能会奇怪,ToolBar与MenuBar似乎是如此相似,以至于产生是否有必要使用ToolBar的疑虑。然而面对用户越来越挑剔审美眼光,MenuBar构件实在有些难当重任,而且复杂的嵌套也极易忘记闭合构件。反观ToolBar,它不但可以包含Menu构件,还可以直接包含Combo、Button等构件,极大的方便了用户编写页面。

30.65.1. 构件信息

表 30.156. 构件信息

Component Typeorg.operamasks.faces.component.widget.UIToolBar
Component Familyorg.operamasks.faces.component.widget.UIToolBar
Component Classorg.operamasks.faces.component.widget.UIToolBar
Tag Classorg.operamasks.faces.webapp.toolbar.UIToolBarTag
Renderer Typeorg.operamasks.faces.component.widget.UIToolBar
Renderer Classorg.operamasks.faces.render.widget.ajax.AjaxToolBarRender

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.toolbar.base.UIToolBarBase

+++++org.operamasks.faces.component.widget.UIToolBar

30.65.2. 属性

表 30.157. 属性

binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
jsvar 定义类 org.operamasks.faces.component.widget.UIToolBar
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名,使用此变量名可以引用脚本中javascript对象
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
style 定义类 org.operamasks.faces.component.widget.UIToolBar
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染时应用到构件的CSS风格, 对应于元素的style属性
styleClass 定义类 org.operamasks.faces.component.widget.UIToolBar
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件上的CSS样式类
target 定义类 org.operamasks.faces.component.widget.UIToolBar
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
分页器所在容器的id,若未指定则为父容器

30.65.3. 构件API

30.65.3.1. UIToolBar(ToolBar的构件类)

表 30.158. 常用方法

disable 方法签名 public void disable()
参数说明 无参数
返回值 无返回值
方法描述 使ToolBar构件处于非使能状态
enable 方法签名 public void enable()
参数说明 无参数
返回值 无返回值
方法描述 使ToolBar构件处于使能状态
addItem 方法签名 public void addItem(UIComponent component)
参数说明 component: 添加到toolBar构件中的构件
返回值 无返回值
方法描述 在ToolBar构件中添加一个构件

30.65.4. 示例

下面例子介绍了w:toolBar的用法。例子也使用了w:menuBar,目的是将两者进行对比,使用户了解ToolBar的优越性。

首先创建托管Bean:

@ManagedBean(scope = ManagedBeanScope.REQUEST)
public class ToolBarBean {

    private SelectItem[] colors = { new SelectItem("Red", "Red Color"),
            new SelectItem("Green", "Green Color"), 
            new SelectItem("Blue", "Blue Color") 
    };

    public SelectItem[] getColors() {
        return colors;
    }
}

下面是页面代码:

<!-- ToolBar -->
<w:toolBar id="toolBar1" jsvar="toolBar1Jsvar" style="width:400">
    <w:menu label="文件">
        <w:menu image="images/new.gif" label="新建">
            <w:commandMenuItem label="文本文件" />
            <w:commandMenuItem label="XML文件" />
            <w:commandMenuItem label="Java文件" />
        </w:menu>
        <w:commandMenuItem image="images/open.gif" label="打开..." />
        <w:commandMenuItem image="images/save.gif" label="保存" />
        <w:commandMenuItem label="另存为..." disabled="true" />
        <w:separator />
        <w:linkMenuItem label="关闭" value="toolbar.jsp"
            onclick="return confirm('Are you sure?')" />
    </w:menu>

    <w:separator />

    <!-- 在ToolBar中放置Combo -->
    <w:combo emptyText="请选择颜色..." typeAhead="true"
        valueChangeListener="#{ToolBarBean.valueChange}">
        <f:selectItems value="#{ToolBarBean.colors}" />
    </w:combo>

    <w:separator />

    <!-- 在ToolBar中放置Button -->
    <w:button value="Click me" action="#{ToolBarBean.click}" />
</w:toolBar>

<br />

<!-- MenuBar -->
<w:menuBar>
    <w:menu label="文件">
        <w:menu image="images/new.gif" label="新建">
            <w:commandMenuItem label="文本文件" />
            <w:commandMenuItem label="XML文件" />
            <w:commandMenuItem label="Java文件" />
        </w:menu>
        <w:commandMenuItem image="images/open.gif" label="打开..." />
        <w:commandMenuItem image="images/save.gif" label="保存" />
        <w:commandMenuItem label="另存为..." disabled="true" />
        <w:separator />
        <w:linkMenuItem label="关闭" value="toolbar.jsp"
            onclick="return confirm('Are you sure?')" />
    </w:menu>
    <!-- 由于MenuBar不能直接放置Combo和Button 所以省略 -->
</w:menuBar>

通过这个例子可以看出,ToolBar不但简单易用,而且有许多MenuBar所不具备的功能。