Set构件是用来设置一个服务端的变量(application、session或者request),例如:在一个循环计算的过程中,可以用来保存临时的变量。通常与Remove构件是对应的。
表 30.133. 构件信息
| Component Type | org.operamasks.faces.component.widget.invisible.Set |
| Component Family | org.operamasks.faces.widget.Invisible |
| Component Class | org.operamasks.faces.component.widget.invisible.Set |
| Tag Class | org.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.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) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 变量名 | ||||
下面例子介绍了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