action层定义的对象User: id,name;
${User.id} ${User.name}
action层定义的两个变量 String id; String name;
(1)、${id} ,${name}
(2)、截取字符串的一部分:${name.substring(0,3)}****${name.substring(8,11)}, 这里注意:substring都是小写
action层定义的List<T>addList 集合
(1)、<s:iterator value="addList" var="tl">
<span class="item_left">收货人</span>
<span class="item_right">${tl.name}</span>
<span class="item_left">联系方式2</span>
<span class="item_right">${tl.telphone}</span>
</s:iterator>
struts的遍历展示:value="addList" 集合 “addList” 名称要和控制层的集合的名称一样,var="tl" 就是集合中的每一个遍历出来的对象
(1)、对象的变量的大小比较
<s:if test="orderlist.result.size() > 0">
result这个集合的大小
</s:if>
<s:else>
<s:if test="request_status == 1">
直接变量的比较
</s:if>
</s:else>
(2)、直接一个变量大小的比较,其中tl就是一个对象而def就是这个对象的一个int属性
// 能判断
<s:iterator value="addList" var="tl">
<s:if test="#tl.def==0">默认</s:if><s:if test="#tl.def==1">设置为默认</s:if>
<s:iterator>
//不能判断
<s:iterator value="addList" var="tl">
<s:if test="tl.def==0">默认</s:if><s:if test="tl.def==1">设置为默认</s:if>
<s:iterator>
这个为什么不能就不清楚,看了这篇文章改了之后也没用:http://blog.csdn.net/zhujiaxing666666/article/details/8518425
(3)、action层返回两个 一个是集合通过遍历获取一个个对象另一个是返回的一个String类型的字符串比较是否相等
其中的obList就是一个集合 而ol 就是这个集合中的一个对象,在<s:if test="depart_id==#ol.id"> </s:if> 这个标签中depart_id就是action层返回的String类型
<s:iterator value="objList" var="ol">
<option value="${ol.id}" <s:if test="depart_id==#ol.id"> selected</s:if>>${ol.name}</option>
</s:iterator>
所以通过上面的比较你会发现其中的depart_id是没有添加#而遍历objList获取的ol对象要加#
5、返回的时候返回了两个集合,按照第一个集合的索引来获取第二个集合的值
(1)、先来看看在控制层定义的java类Page:
public class Page<T> {
//-- 返回结果 --//
protected List<T> result = Lists.newArrayList();
//另一个集合
protected List<Integer> days = Lists.newArrayList();
/**
* 获得页内的记录列表.
*/
public List<T> getResult() {
return result;
}
/**
* 设置页内的记录列表.
*/
public void setResult(final List<T> result) {
this.result = result;
}
// 获取生日集合
public List<Integer> getDays() {
return days;
}
//设置生日
public void setDays(List<Integer> days) {
this.days = days;
}
}
ok 代码我们看到了,下面看看struts的遍历
<s:iterator value="page.result" var="st" status="l">
<tr>
<td>${st.name}</td>
<td>${st.employee_num}</td>
<td><s:iterator value="#st.djList" var="jl">${jl.depart.name }</s:iterator></td>
<td><s:iterator value="#st.djList" var="jl"> <s:if test="#jl.job != null">${jl.job.name }</s:if></s:iterator></td>
<%-- <td>${l.index+1}</td> --%>
<td>${page.days[l.index]}</td>
</tr>
</s:iterator>
一个集合按照另一个集合的索引位置获取其值:
这个小demo中出现的情况很多,一个集合按照一个集合的索引值获取值比如 status="l" 这个属性中的"l" 就是一个集合索引的变量,而l.index 就获取了集合中的索引位置, <td>${l.index+1}</td>就是这个结合的索引值。
而<td>${page.days[l.index]}</td> 就是按照page.result 这个集合的索引位置获取page.days这个集合的索引位置的值。
集合的变量中包含着另一个集合
<s:iterator value="page.result" var="st" status="l">
<td><s:iterator value="#st.djList" var="jl">${jl.depart.name }</s:iterator></td>
6、页面的跳转
<result name="toFailed" type="redirectAction">
<param name="actionName">welfare_Failed.do</param>
<param name="request_status">${request_status}</param>
<param name="message">${message}</param>
<param name="encode">true</param>
</result>
当我们的控制层返回return "toFailed" 时他就会自动转发到 welfare_Failed.do 这个页面,<param name="actionName">welfare_Failed.do</param>指定了跳转的地址
<param name="request_status">${request_status}</param>
<param name="message">${message}</param>
这两个是传的参数
<param name="encode">true</param> 是不是进行编码
在控制层进行解码
public String Failed() throws UnsupportedEncodingException{
// utf-8 解码
String messages = URLDecoder.decode(getMessage(), "utf-8");
// 在赋值
setMessage(messages);
// 返回到其他页面
return "Failed";
}
struts2乱码跳转地址:http://blog.sina.com.cn/s/blog_6b8660320101dygt.html
7、页面日期格式化
(1)、
<s:iterator value="page.result" var="st" status="l">
<tr>
<td>${st.employee_num}</td>
<td>${st.telephone}</td>
<td><s:date name="#st.entry_time" format="yyyy.MM.dd"/></td>
<td>${page.days[l.index]}</td>
</tr>
</s:iterator>
这里的<s:date name="#st.entry_time" format="yyyy.MM.dd"/> 这里就定义了日期的格式化:2016.09.12
当然我们也能定义为很多格式
这里的<s:date name="#st.entry_time" format="yyyy年MM月dd日"/> 这里就定义了日期的格式化:2016年09月12日
(2)、时间格式直接传递过来使用<s:date>
<s:date name="birthday" format="yyyy-MM-dd"/>就是将属性birthday按yyyy-MM-dd的格式进行输出.
(3)、直接传递使用s:param
<s:textfield name="birthday" >
</s:textfield>
或者<input type="text" value="<s:date name="birthday" format="yyyy-MM-dd" />" />