struts标签处理map中包含list 展示

代码:

<table cellspacing="0" cellpadding="0">

<tr>
<th style="width: 100px;">订单号</th>
<th style="width: 130px;">下单时间</th>
<th style="width: 90px;">订单金额</th>
<th style="width: 120px;">交易号</th>
<th style="width: 195px;">商品</th>
<th style="width: 100px;">商品状态</th>
<th>操作</th>
</tr>
<s:iterator value="#request.mapList" id="orderMap">
<s:set name="total" value="#orderMap.value.size"/>  
<s:iterator value="#orderMap.value" status="s"> 
<tr>
<s:if test="#s.first"><td rowspan="${total}"><s:property value="orderInfo.code"/></td></s:if> 
<td ><s:date name="orderInfo.createTime" format="yyyy-MM-dd HH:mm:ss" /></td>
<td ><s:property value="priceNormal"/></td>
<td ><s:property value="goodsTxnCode"/></td>
<td class="txt"><p style='overflow: hidden;display: inline-block;width: 150px;height: 22px;' title='<s:property value="kpiDesc"/>' ><s:property value="kpiDesc"/></p></td>
<td >
<s:if test="state<7">
<label class="green">
<s:if test="state==1">未支付</s:if>
<s:elseif test="state==2">已支付</s:elseif>
<s:elseif test="state==3">已消费</s:elseif>
<s:elseif test="state==4">已返现</s:elseif>
<s:elseif test="state==5">退货中</s:elseif>
<s:elseif test="state==6">已退货</s:elseif>
<s:elseif test="state==7">已关闭</s:elseif>
</label>
</s:if>
<s:elseif test="state==7">
<label class="gray">已关闭</label>
</s:elseif>
</td>
<td><s:if test="state==2">
<p><a href="javascript:;" class="consume blue"  οnclick="getInfo(this,'<s:property value="id"/>')">确认消费</a></p></s:if>
<s:if test="state==5">
<p><a href="javascript:;" class="receipt blue" οnclick="getInfo(this,'<s:property value="id"/>')" >确认收货</a></p>
<p><a href="javascript:;" class="unreceipt blue" οnclick="getInfo(this,'<s:property value="id"/>')">拒绝退货</a></p>
</s:if>
<a href="showOrderDetail.action?id=<s:property value='id'/>" class="blue" target="_blank">查看详情</a></td>
</tr>
 </s:iterator>
  </s:iterator>

</table>

结果图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts2.5.30接收ArrayList数组时被限制为最大256条的原因是因为默认情况下,Struts2使用的是ArrayList类型的TypeConverter进行类型转换,而该TypeConverter默认的最大大小为256条。 要解除该限制,可以自定义一个TypeConverter,并在struts.xml文件注册该TypeConverter。具体步骤如下: 1. 自定义一个TypeConverter,继承自StrutsTypeConverter类,并重写convertFromString方法,如下所示: ```java import java.util.ArrayList; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class MyArrayListConverter extends DefaultTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { if (values == null || values.length == 0) { return null; } ArrayList<Object> list = new ArrayList<Object>(); for (String value : values) { list.add(value); } return list; } } ``` 2. 在struts.xml文件注册该TypeConverter,如下所示: ```xml <bean type="org.apache.struts2.util.StrutsTypeConverter" name="myArrayListConverter" class="com.example.MyArrayListConverter"/> ``` 3. 在action将需要转换的参数指定为该TypeConverter,如下所示: ```java public class MyAction extends ActionSupport { private ArrayList<Object> list; public ArrayList<Object> getList() { return list; } public void setList(ArrayList<Object> list) { this.list = list; } @Override public String execute() throws Exception { // do something return SUCCESS; } @Override public void validate() { if (list != null && list.size() > 1000) { addFieldError("list", "列表长度不能超过1000"); } } @Override public void prepare() throws Exception { // 注册TypeConverter ConvertUtils.register(new MyArrayListConverter(), ArrayList.class); } } ``` 在上述代码,我们将需要转换的参数list指定为自定义的TypeConverter,在prepare方法注册TypeConverter。同时,在validate方法可以对list的大小进行验证,以防止超过指定的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值