Struts2 菜鸟使用小记录

1、struts 在前台展示对象:User
action层定义的对象User: id,name;

${User.id}  ${User.name}


2、直接变量的展示
action层定义的两个变量 String id; String name;
(1)、${id}  ,${name}

(2)、截取字符串的一部分:${name.substring(0,3)}****${name.substring(8,11)}, 这里注意:substring都是小写


3、list集合的展示:
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" 就是集合中的每一个遍历出来的对象


4、集合大小的判断,s:if  s:elseif
(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: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" />" /> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值