总结一:jsp调用struts的action类中的map

     近来做的一个项目用到了s:iterator 遍历struts的action类中的map,项目完成了,做一下总结,当做日后调用的笔吧。

1.下面,大家先看下stuts2中action处理代码:

Map<String,String> mapDetail = new HashMap<String,String>();//详细结果

mapDetail.put(cjxx_jjbh_find,doc.get(cjxx_jjbh_find));
mapDetail.put(cjxx_bjdhsj_find,doc.get(cjxx_bjdhsj_find));
mapDetail.put(cjxx_cjlbmc_find,doc.get(cjxx_cjlbmc_find));
mapDetail.put(cjxx_xzxl_find,doc.get(cjxx_xzxl_find));
mapDetail.put(cjxx_cjjg_find,doc.get(cjxx_cjjg_find));
mapDetail.put(cjxx_bjr_find,doc.get(cjxx_bjr_find));
mapDetail.put(cjxx_bjrzh_find,doc.get(cjxx_bjrzh_find));
mapDetail.put(cjxx_lxdh_find,doc.get(cjxx_lxdh_find));
mapDetail.put(cjxx_bjnr_find,doc.get(cjxx_bjnr_find));
mapDetail.put(cjxx_fxdd_find,doc.get(cjxx_fxdd_find));
mapDetail.put(cjxx_jjdwmc_find,doc.get(cjxx_jjdwmc_find));


2.jsp使用s:iterator遍历,优点代码简洁,缺点是在IE8中获取不了status.index参数,导致页面只显示了一列。如果对浏览器要求不高的可以选用。

<s:iterator value="mapDetail" id="entry">
        <s:set name="total" value="mapDetail.values.size()"/>
    <s:iterator value="#entry.value" status="st">
            <td width="120" bgcolor="#d8ebfa" class="cu"><s:property value="key"/></td>
            <td width="150"><s:property value="value"/></td>
            <s:if test="%{#st.index<#total}">
                <s:if test="%{#st.index%2==0}">
                    </tr><tr>
                </s:if>
            </s:if>
            <s:else>
            <s:if test="%{(#st.index+1)%2==0}">
                    <td width='120'>&nbsp;</td><td width='150'>&nbsp;</td>
                </s:if>
            </s:else>
         </s:iterator>

</s:iterator>


3.jsp中直接用java代码迭代,优点是稳定,不用考滤浏览器版本问题,缺点是代码相对于s:iterator多了几行代码。

页头导入<%@ page import="java.util.*"%>

处理代码部分:

<%
//数据集
Map<String,String> mapDetail = (Map<String,String>)request.getAttribute("mapDetail");
int num=mapDetail.size();
int nColumn=0;
for (Map.Entry<String, String> m : mapDetail.entrySet()) {
 String dKey = "";
 String dValue = "";
 if(m.getKey()!=null)dKey = m.getKey();
 if(m.getValue()!=null)dValue = m.getValue(); 
out.write("<td width='120'>"+dKey+"</td>");
out.write("<td width='150'>"+dValue+"</td>");

nColumn++;

if(nColumn < num) {
if (nColumn % 2 == 0) {
out.write("</tr><tr>");
}
} else {
if ((nColumn + 1) % 2 == 0) {
out.write("<td width='120'>&nbsp;</td><td width='150'>&nbsp;</td>");
}
}
}
%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值