30.55. <w:set>

Set构件是用来设置一个服务端的变量(application、session或者request),例如:在一个循环计算的过程中,可以用来保存临时的变量。通常与Remove构件是对应的。

30.55.1. 构件信息

表 30.133. 构件信息

Component Typeorg.operamasks.faces.component.widget.invisible.Set
Component Familyorg.operamasks.faces.widget.Invisible
Component Classorg.operamasks.faces.component.widget.invisible.Set
Tag Classorg.operamasks.faces.webapp.widget.SetTag

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.widget.invisible.base.SetBase

+++++org.operamasks.faces.component.widget.invisible.Set

30.55.2. 属性

表 30.134. 属性

binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
evalVar 定义类 org.operamasks.faces.component.widget.invisible.base.SetBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否对var属性进行动态求值
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
scope 定义类 org.operamasks.faces.component.widget.invisible.Set
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
变量的生命周期,application、session或者request,默认是request
value 定义类 org.operamasks.faces.component.widget.invisible.Set
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
变量值
var 定义类 org.operamasks.faces.component.widget.invisible.Set
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
变量名

30.55.3. 构件API

30.55.4. 示例

下面例子介绍了w:set的用法,用w:set指定了一个变量time,time的值是当前时间,接着用w:forEach来输出3条信息,在每条信息的前面加上了时间:

<w:set scope="request" value="#{sampleBean.now}" var="time"></w:set>
<w:forEach value="#{sampleBean.messages}" var="message">
    <h:outputText value="#{time}"></h:outputText>:
    <h:outputText value="#{message}"></h:outputText>
    <br/>
</w:forEach>

sampleBean代码:

@ManagedBean(name = "sampleBean", scope = ManagedBeanScope.SESSION)
public class SampleBean {
    @ManagedProperty
    private String now = new Date().toLocaleString();

    @ManagedProperty
    private List<String> messages = Arrays.asList(new String[] { 
        "message1",
        "message2", 
        "message3" 
    });
}

输出结果是:

2007-10-9 10:30:47 : message1 2007-10-9 10:30:47 : message2 2007-10-9 10:30:47 : message3