转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html
<s:select name="singer" list="{}" label="歌星" headerKey="0" headerValue="--歌手名单--" emptyOption="true">
<s:optgroup list="#{1:'任贤齐',2:'刘德华',3:'周杰伦'}" label="男歌手"/>
<s:optgroup list="#{1:'萧亚轩',2:'蔡依林',3:'she'}" label="女歌手"/>
</s:select>
<s:combobox label="来源调查" list="{'朋友介绍','电视广告','网络广告'}" name="from" />
<s:updownselect
list="{'java','C#','VC','php','vb','vc','python'}"
moveDownLabel="下移一位"
moveUpLabel="上移一位"
selectAllLabel="全部选中"
label="您常用编程语言排名"
/>
<s:optiontransferselect
leftTitle="选择喜欢做的事:"
list="{'听歌','看电影','编程','玩游戏','chat'}"
name="love"
headerKey="0"
headerValue="喜欢做的事"
emptyOption="true"
rightTitle="选择讨厌做的事:"
doubleList="{'跳舞','唱歌','打篮球','旅游','shopping'}"
doubleName="hate"
doubleHeaderKey="0"
doubleHeaderValue="不喜欢的事"
doubleEmptyOption="true"
label="个人兴趣说明"
leftUpLabel="上移"
leftDownLabel="下移"
rightUpLabel="上移"
rightDownLabel="下移"
addToLeftLabel="<—添加"
addToRightLabel="添加—>"
addAllToLeftLabel="<—添加(All)"
addAllToRightLabel="添加(All)—>"
selectAllLabel="全选"
/>
<s:checkbox label="接受服务条款" value="false" name="user.accept"/>
有了前面的标签学习,这些标签很容易理解,只需结合显示效果和查看源码来加深它们的理解。但是特别要注意的是<s:checkbox>标签与</s:checkboxlist>的区别。
补充:使用struts2生成的表单标签会在标签内嵌套一些特殊的格式,在使用了struts2生成的标签所在网页内查看源代码可以发现多了一些如<tr><td>这样的格式化代码。如果不想struts2增加这些多余的格式化代码,可以在struts.xml中配置如下内容:
<!-- struts2生成的表单标签使用默认的主题,即不附加格式化标签 -->
<constant name="struts.ui.theme" value="simple"/>
6.其它常用标签的使用(代码参名为“补充”的文件夹下的tag.jsp)
(1)<s:set>标签
此标签主要用于设置一些属性值。
Scope:指定变量被设置的范围,该属性可以接受application、session、request、page或Action。如果没有设置该属性,则默认放置在OGNL Context中,我们可以通过#号来引用。
Value:赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值赋给变量。
Id/name/var:属性的引用名称,id/name均过时,建议用var来取代他们。
(2)<s:property>
Default:可选属性,如果需要输出的属性值为null,则显示属性指定的值
Escape:可选属性,指定是否格式化html代码。
Value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值
Id:可选属性,指定该元素的标识
(3)<s:Iterator>
Value:可选属性,指定迭代的集合,如果没有指定该属性,则使用ValueStack栈顶的集合
Id:可选属性,指定集合里元素的id(已被标记为过时)
Status:可选属性,该属性指定迭代时当前迭代对象的一个实例,并把此实例放在ognl的上下文中,我们可以通过#号来引用这个实例。该实例包含如下几下方法:
Int getCount:返回当前迭代了几个元素。
Int getIndex:返回当前被迭代的元素的索引
Boolean isEven:返回当前被迭代的元素的索引是否是偶数
Boolean isOdd:返回当前被迭代的元素的索引是否是奇数
Boolean isFirst:返回当前被迭代的元素是否是第一个元素
Boolean isLast:返回当前被迭代的元素是否是最后一个元素
说明:因为iterator会把每次迭代的实例放在值栈的栈顶,而<s:property>默认访问的是值栈的栈顶元素。所以如下代码可行:
<s:set var="list" value="{'第一个','第二个','第三个'}"/>
<!-- iterator迭代的特点:会把迭代的对象放到值栈的栈顶 -->
<s:iterator value="#list">
<s:property/>
</s:iterator>
如果想用status来实现一些功能,可参下面的代码:
<br/>-------------------奇数红色,偶数蓝色---------------<br/>
<s:iterator value="#list" status="i">
<font color='<s:if test="#i.even">blue</s:if><s:else>red</s:else>' >
<s:property/>
</font><br/>
</s:iterator>
(4)url标签
<br/><br/>-----------使用url---------------<br/>
<s:set var="age" value="25" scope="request"/>
<s:url action="asm" namespace="/" >
<s:param name="age" value="#request.age"></s:param>
</s:url>
说明:它会根据action及namespace并附加上下文路径构建一个链接。
<br/><!-- value的值中一定要用单引号引起,这样才表示它的值是一个字串 -->
<s:set var="bdUrl" value="'http://www.baidu.com'" />
<s:url value="#bdUrl" /> <br/>
<s:url value="%{#bdUrl}" />
说明:由于url标签的value属性默认不支持ognl,所以我们要使用%{}来表示{}中的#bdUrl是一个ognl表达式。
(5)date标签
<s:date name="date" format="yyyy年mm月dd日 E"> (显示为如:2012年12月12日 星期一)
(6)if else 标签
<s:if test="判定语句">符合判定的执行语句</s:if> 依据上一个if标签<s:else>......</s:else>