<s:property>标签用于输出某个OGNL表达式的值,可以认为其内部使用的是ValueStack对象的 findString方法。如果没有设置value属性,则输出ValueStack栈顶的对象。特例:如果采用不加#前缀的方式输出Context中的某个对象,这个对象必须是string类型。
<s:push>标签用于将OGNL表达式的值压入栈顶。
看<s:push>标签的帮助,可以知道有一个为top的特殊OGNL表达式,表示栈顶的对象。
l<s:bean>标签用于实例化一个JavaBean对象,并将其压入栈顶。
如果设置了var属性,还会将实例化的对象存储进ValueStack关联的Context中。
l实验步骤:
Ø查看<s:debug>标签的执行结果。
Ø用<s:push>标签把Context中的一个对象压入栈顶,再查看<s:debug>标签的执行结果,注意<s:debug>标签要位于<s:push>标签对之间。
Ø用<s:bean>标签用于实例化一个java.util.Date实例对象,查看<s:debug>标签的执行结果,注意<s:debug>标签也要位于<s:push>标签对之间;接着设置其var属性,再查看<s:debug>标签的执行结果。
<s:set>标签用于将某个值存入指定范围域中,通常用于将一个复杂的ognl表达式用一个简单的变量来进行引用。
scope属性:指定变量被放置的范围,该属性可以接受application、session、request、 page或action。该属性的默认值为action,文档说即表示同时存储进request作用域和OGNL Context中,但实验结果是只存储进了OGNL Context中。
value属性:赋给变量的ognl表达式结果.如果没有设置该属性,则将ValueStack栈顶的值赋给变量。
l<s:if/elseif/else>等标签用于判断test属性中指定的ognl表达式的结果是否为true,为真则执行标签体重的内容。
<s:iterator>标签用于迭代一个OGNL集合,并逐一将迭代出来的元素压入栈顶和弹栈。status属性:创建代表当前迭代状态的IteratorStatus对象,并指定将其存储进ValueStack Context中时的key。输出迭代后的ValueStack栈顶对象的属性并利用迭代状态的示例代码如下:
<s:iterator value="#request" status="status">
<tr class='<s:property value="#status.odd ? 'odd':'even'"/>' >
<td><s:property value="key"/>::::<s:property value="value"/></td>
</tr>
</s:iterator>