References: 《利用Struts标签格式化日期输出》,《struts2 jsp页面遍历List集合,修改后将集合传到action中》《struts iterator标签》《Struts2 配置相关问题》《最靠谱的官方文档Struts 2.1.6 Tag Reference》---这个抽空得好好研究!
页面读值的四种常用办法:
<s:property value="username"/>
${username}
<s:property value="#request.username"/> (#session. #application.类似)
<s:property value="%{username}"/>
格式化日期输出
1.利用 <s:date>进行格式化.如:
<s:date name="birthday" format="yyyy-MM-dd"/>
就是将属性birthday按yyyy-MM-dd的格式进行输出.
2.利用<s:param>进行格式化.如:
<s:textfield name="birthday" >
<s:param name="value"><s:date name="birthday" format="yyyy-MM-dd"/></s:param>
</s:textfield>
或者
<input type="text" value="<s:date name="birthday" format="yyyy-MM-dd" />" />
3.通过国际化的方式来进行
首先在struts.properties中配置struts.custom.i18n.resources=globalMessages
然后在globalMessages_zh_CN.properties和globalMessages_en_US.properties文件中添加如下内容:
global.datetime = {0, date, yyyy-MM-dd HH:mm:ss}
global.date = {0, date, yyyy-MM-dd}
最后在页面中使用下面的语句就可以实现日期的格式化输出了.
<s:textfield name="birthday"
value="%{getText('global.date',{birthday})}"/> --golbal.date样式
<s:textfield name="birthday"
value="%{getText('global.datetime',{birthday})}"/> --global.datetime样式
输出表格
利用Struts的Iterator标签进行遍历输出:
<s:iterator var="list" value="entpList" status="sta"><tr><td><s:property value="#sta.index" /></td><td>${list.ename}</td><td>${list.loginName}</td><td>${list.location}</td><td>${list.email}</td></tr></s:iterator>
struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等。
iterator有三个属性:
value :被迭代遍历的集合;
id :指定集合里面的元素id; //struts 2.1.x版本之后 Deprecated. Use 'var' instead
status :迭代元素的索引;
1:jsp页面定义元素写法 数组或list
<s:iterator value= "{'1','2','3','4','5'}" id= 'number' >
<s:property value= 'number' />A
</s:iterator>
打印结果为: 1A2A3A4A5A
2:索引的用法
struts2.0 的遍历控件<s:iterator>中的index状态:
1:odd(奇数)
2:first(首索引)
3:even(偶数)
4:last(尾索引)
5:index(索引项)
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd()当前元素索引是否奇数
<s:iterator value= "{'a','b','c'}" id= 'char' status= 'st' >
<s: if test= "#st.Even" >
现在的索引是奇数为:<s:property value= '#st.index' />
</s: if >
当前元素值:<s:property value= 'char' />
</s:iterator>
看清楚 test 是关键字哦 if test是一起的
3:遍历map
value也可以是数据栈里面的java.util.Map对象.
<s:iterator value= "map" id= "id" status= "st" >
key : <s:property value= 'key' />
value:<s:property vlaue= 'value' />
</s:iterator>