首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

后盾是SSH,查询出了一个list结果,将其在JSP页面的表格里显示。非常-

2012-12-17 
后台是SSH,查询出了一个list结果,将其在JSP页面的表格里显示。非常--------急急急急急急急急查询出来的list

后台是SSH,查询出了一个list结果,将其在JSP页面的表格里显示。非常--------急急急急急急急急
查询出来的list结果集是这样的:
id_1      id_2       count
A3         B5          2
A1         B2          4
A2         B3          3
A1         B1          2
A5         B3          1
A4         B4          2
然后我要把这个结果集里的count在JSP页面的表格里面显示。
要符合行与列才在那个对应的单元格里显示。(下面是我要的结果,最后要显示成这样,我还没弄好。)
行是固定在A1-A10,列B1-B10内的。(也就是说整个表格是死的,动态的根据数据库里对应的数据来控制tr与td也可以,烦请知道的大侠支个招。)
        A1     A2       A3       A4      A5       A6     A7      A8     A9    A10
B1    2
B2    4
B3              3                              1              
B4                                     2                 
B5                         2
B6
B7
B8
B9
B10



[最优解释]

引用:
如果我粘一百遍以后不可以迭代你就等着我骂人,迭代成功了就"3q",顺便给你分。。 


收起你那破分滚蛋。
[其他解释]
<table>
<s:iterator value="list" status="x">
   <s:if test="<s:property value="#x.count">==1">
        <tr>
            <td>
            </td>
       <s:iterator value="list" >
           <td>
            <s:property value="#list.id_1">
           </td>
       </s:iterator>
        </tr>
   </s:if>
    <s:else>
        <tr>
       <s:iterator value="list" status="y">
            <s:if test="<s:property value="#y.count">==1">


                  <td>
                <s:property value="#list.id_2">
                 </td>
            </s:if>

           <s:iterator value="list" status="v1">   
               <s:iterator value="list" status="v2">   
                   <s:if test="<s:property value="#v1.count">==<s:property value="#x.count">&&<s:property value="#v2.count">==<s:property value="#y.count">">
                  <td>
                     <s:property value="#list.count">
                 </td>
                  </s:if>
               </s:iterator>
           </s:iterator>

       </s:iterator>
       </tr>
    </s:else>
</s:iterator>
</table>
[其他解释]
<s:iterator>
然后根据你需要的格式
显示出每个选项

[其他解释]
2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextParams="true" namespace="/test">
</s:action>
----------下面是你的代码,我改了些名字。“#coll.result”的"result"是后台定义的一个Object类型变量用来存结果的。
<table>
<s:iterator value="#coll.result" status="x">
<s:if test="<s:property value='#x.count'/>==1">
<tr>
<td>aaaaaaaa</td>
<s:iterator id="h" value="#coll.result">
<td><s:property value="#h.balanceSeg1Id" /></td>
</s:iterator>
</tr>
</s:if>
<s:else>
<tr>
<s:iterator id="z" value="#coll.result" status="y">
<s:if test="<s:property value='#y.count'/>==1">
<td><s:property value="#z.balanceSeg2Id" /></td>
</s:if>

<s:iterator id="s" value="#coll.result" status="v1">
<s:iterator value="#coll.result" status="v2">
<s:if test="<s:property value='#v1.count'/>==<s:property value='#x.count'/>&&<s:property value='#v2.count'/>==<s:property value='#y.count'/>">
<td><s:property value="#s.count" /></td>
</s:if>
</s:iterator>
</s:iterator>
</s:iterator>
</tr>
</s:else>


</s:iterator>
</table>
[其他解释]

引用:
2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextParams="true" namespace="/test">
</s:action>
----------……

你把
<s:if test="<s:property value='#x.count'/>==1">
里面的<s:property value='#x.count'/> 都改成#x.count形式把。。
[其他解释]
引用:
引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextParams="true" namespace="/test">
</s:ac……


还是没用,那个if条件好像永远满足不了一样,那一行aaaaa都没显示。
[其他解释]
引用:
引用:引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextParams="true" namespa……

你看看网页源代码 ,里面是怎么样的嘛 ,我昨天写的匆忙,逻辑应该没问题。
[其他解释]
引用:
引用:引用:引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextPara……

源码里面好大一片空白然后接着一个tr然后又好多一片空白又一个tr,大虾,拜托你看一下,实在不行你把思路写一遍咯,我自己来写一遍看看。
[其他解释]
页面固定是10*10?

那把你的结果迭代一次,重新装到List<Map<String,Object>>里

map.put(id1+id2,count)

页面自己先写死,<property value="A1B1"/>,<property value="A2B1"/>,...

<property value="A1B10"/>,<property value="A2B10"/>,...

什么时候粘明白了,自己把它改成动态的。
[其他解释]
引用:
页面固定是10*10?

那把你的结果迭代一次,重新装到List<Map<String,Object>>里

map.put(id1+id2,count)

页面自己先写死,<property value="A1B1"/>,<property value="A2B1"/>,...

<property value="A1B10"/>,<property v……


你说的前台我没弄明白意思,你拼成A1B1没用把?A1是行B1是列。
[其他解释]
引用:
你说的前台我没弄明白意思,你拼成A1B1没用把?A1是行B1是列。


你把行+列当key ,值当作value塞到map里面去,直接在页面上自己写10x10的table,从map里面取。

它是行你就只能当行,它是列你就只能当列,那么要你写代码的做什么?
[其他解释]
引用:
引用:你说的前台我没弄明白意思,你拼成A1B1没用把?A1是行B1是列。

你把行+列当key ,值当作value塞到map里面去,直接在页面上自己写10x10的table,从map里面取。

它是行你就只能当行,它是列你就只能当列,那么要你写代码的做什么?


我对不起你,你说那么多我还是没怎么明白,我是这样理解你说的意思的:先把结果存起来,接着前台直接通过Map的key取值是么?我就是不知道该怎么判断哪个单元格该填值,哪个不该填,因为数据库的值是肯定是会变化的。

[其他解释]
引用:
引用:引用:引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false" ignoreContextPara……


<table>
<s:iterator id="list" value="#coll.result" status="x">
<s:if test="#x.index+1==1">
<tr>
<td></td>
<s:iterator id="h" value="#coll.result">
<td><s:property value="#h.balanceSeg1Id" /></td>
</s:iterator>
</tr>
</s:if>
<s:else>
<tr>
<s:iterator id="z" value="#coll.result" status="y">
<s:if test="#y.index+1==1">
<td><s:property value="#list.balanceSeg2Id" /></td>
</s:if>

<s:iterator value="#coll.result" status="v1">
<s:iterator value="#coll.result" status="v2">
<s:if test="#v1.index==#x.index && #v2.index==#y.index">
<td><s:property value="#list.custCount" /></td>
</s:if>
</s:iterator>
</s:iterator>
</s:iterator>
</tr>
</s:else>
</s:iterator>

</table>
然后结果是这样的:------------------------
     A1A1A2A3A4A5
B2444444
B3333333
B5222222
B4222222
B3111111

[其他解释]
其实代码上还是你要自己写,就是一个思路的问题:

1 遍历表格,再遍历数据
2 遍历数据,再遍历表格

你跟你的数据量多少采用哪个方法。

eg:1 对于A1-B1 这个单元格而言,遍历符合要求的数据,放入。
    2 对于A1-B1-2 这条数据而言,遍历表格,符合要求,放入。

具体怎么放入。你的表格是死的。HTML语言。慢慢整吧。
[其他解释]

引用:
引用:引用:引用:引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" executeResult="false……



<s:iterator value="#coll.result" status="v1" id="VV">
<s:if 

test="#coll.result.balanceSeg1Id==#VV.balanceSeg1Id&&"#coll.result.bala

nceSeg2Id==#z.balanceSeg2Id>
<td><s:property value="#VV.custCount" /></td>
</s:if>
</s:iterator>


把上面这段 覆盖那个status="v1" 的s:iterator 。开始和结束。
[其他解释]
引用:
我对不起你,你说那么多我还是没怎么明白,我是这样理解你说的意思的:先把结果存起来,接着前台直接通过Map的key取值是么?我就是不知道该怎么判断哪个单元格该填值,哪个不该填,因为数据库的值是肯定是会变化的。


你有什么可判断的,你页面写死,按照行+列取100个值,后台有值的格自然就取出来了,没有的自然就空着了。
[其他解释]
引用:
引用:引用:引用:引用:引用:2楼的哥们儿,你得if条件都进不去吖,你看看是不是有啥问题?我什么都没显示出来:
<s:action id="coll" name="collectAction!listCollect" ex……


现在结果变成了这样。。。。。。。。。。。。。。。。。。。
    A1A1A2A3A4A5
B224
B333
B52
B42
B311

代码按你说的,然后我稍作了一点改变,因为你那里是不是写错了?
<s:iterator value="#coll.result" status="v1" id="VV">
<s:if test="#list.balanceSeg1Id==#VV.balanceSeg1Id && #list.balanceSeg2Id==#z.balanceSeg2Id">
<td><s:property value="#VV.custCount" />
</td>
</s:if>
</s:iterator>
------其他解决方案--------------------


引用:
XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id &amp;&amp; #VV.balanceSeg2Id==#list.balanceSeg2Id"><td><s:propert……


A1A1A2A3A4A5
B244
B331
B52
B42
B331
变这样了,我不知道你留意了没有,我B1没打出来,数据库是有B1这一列的。
[其他解释]

<s:iterator value="#coll.result" status="v1" id="VV">
<s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id && #VV.balanceSeg2Id==#list.balanceSeg2Id">
<td><s:property value="#VV.custCount" />
</td>
</s:if>
</s:iterator>


试试 同样替换。。
[其他解释]
就STRUTS标签循环遍历出来就好了 。 楼上好多代码解释 。 我就不贴图了 。
[其他解释]
引用:
XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id &amp;&amp; #VV.balanceSeg2Id==#list.balanceSeg2Id"><td><s:propert……

我把你的代码改动了,结果是出来了,不过有些地方是重复的,我想要的结果是行和列不会重复,因为A与B都相同的话是count+1,你看下面这个结果
      A1A1A2A3A4A5
B1 2     
B2     4    
B3         3   
B5              2  
B4                   2 
B3                       1
那个行的A1要不重复,然后4就是在A1B2的位置,反正就是行与列不要重复,因为没有重复的必要。我把你的代码改成了下面的样子,麻烦你给我看看咯,把这个问题解决了我就给分。。要不你给我你QQ,论坛上问好难等。
<table border="1" align="center" border="1" bordercolor="#000000"
cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
<s:iterator id="list" value="#coll.result" status="x">
<s:if test="#x.index+1==1">
<tr>
<td></td>
<s:iterator id="h" value="#coll.result">
<td><s:property value="#h.balanceSeg1Id" />
</td>
</s:iterator>
</tr>
</s:if>
<s:iterator id="z" value="#coll.result" status="y">
<s:if test="#y.index+1==1">
<tr>
<td><s:property value="#list.balanceSeg2Id" /></td>
<s:iterator value="#coll.result" status="v1" id="VV">
<s:if test="#list.balanceSeg1Id==#VV.balanceSeg1Id && #VV.balanceSeg2Id==#list.balanceSeg2Id">
<td><s:property value="#VV.custCount" /></td>
</s:if>
<s:else>
<td>&nbsp;</td>
</s:else>
</s:iterator>
</tr>
</s:if>
</s:iterator>
</s:iterator>
</table>
[其他解释]
引用:
就STRUTS标签循环遍历出来就好了 。 楼上好多代码解释 。 我就不贴图了 。



您那么牛B,还是贴给图给我看看,说得倒是轻巧,我代码都在上面了,你给我遍历出来?
[其他解释]
引用:
引用:XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id &amp;amp;&amp;amp; #VV.balanceSeg2Id==#list.b……

我感觉代码应该没问题了。。。
[其他解释]
引用:
引用:引用:引用:XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id &amp;am……


上课中,晚上给看看把,留你qq
[其他解释]
引用:
引用:引用:XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.balanceSeg1Id &amp;amp;amp;&amp;amp;amp; ……


但是A1有两个,B列也有重复的,我就是不想要重复,不然的话数据库有多少个那不多就得有多少列?最多就是10*10。。。
那个循环应该还可以改进,我就是想破脑袋都想不出来改怎么动了。拜托您了。。
[其他解释]
引用:
页面固定是10*10?

那把你的结果迭代一次,重新装到List<Map<String,Object>>里

map.put(id1+id2,count)

页面自己先写死,<property value="A1B1"/>,<property value="A2B1"/>,...

<property value="A1B10"/>,<property v……


我用了你的方法,但是后台的值是在MAP里,要迭代才取得到,而且一迭代打出来好多个count
List<Collect> list=this.collectBiz.listCollect();
this.listMap=new ArrayList<Map<String,Integer>>();
Map<String, Integer> map=new HashMap<String, Integer>();
for(int i=0;i<list.size();i++){
map.put(list.get(i).getBalanceSeg1Id()+list.get(i).getBalanceSeg2Id(),list.get(i).getCustCount());
this.listMap.add(map);
}
this.result=list;
return "index";
这是我后台action里的方法,前台
<s:iterator value="#coll.listMap">
<s:property value="A2B1"/>
</s:iterator>

那个<s:property value="A2B1"/>打出来重复的。。
[其他解释]
引用:
引用:引用:引用:引用:XML/HTML code?1234567<s:iterator value="#coll.result" status="v1" id="VV"><s:if test="#z.balanceSeg1Id==#VV.bal……


1401068307---后知后觉
[其他解释]
楼上看错了,你装的是什么?

只有一维,只有一个Map,把所有的数据,都装在这一个Map里,行+列做Key,count做value。

迭代的#后面写这个map的引用。
[其他解释]
你静态的都没粘明白迭代什么?
<tr>
 <td><s:property value="#coll.listMap.A1B1"/></td>
 <td><s:property value="#coll.listMap.A1B2"/></td>
 <td><s:property value="#coll.listMap.A1B3"/></td>
  ...
 <td><s:property value="#coll.listMap.A1B10"/></td>
</tr>
<tr>
 <td><s:property value="#coll.listMap.A2B1"/></td>
 <td><s:property value="#coll.listMap.A2B2"/></td>
 <td><s:property value="#coll.listMap.A2B3"/></td>
  ...
 <td><s:property value="#coll.listMap.A2B10"/></td>


</tr>
......
<tr>
 <td><s:property value="#coll.listMap.A10B1"/></td>
 <td><s:property value="#coll.listMap.A10B2"/></td>
 <td><s:property value="#coll.listMap.A10B3"/></td>
  ...
 <td><s:property value="#coll.listMap.A10B10"/></td>
</tr>
粘一百遍会不?粘出来了再去想怎么迭代。

[其他解释]

引用:
你静态的都没粘明白迭代什么?
<tr>
 <td><s:property value="#coll.listMap.A1B1"/></td>
 <td><s:property value="#coll.listMap.A1B2"/></td>
 <td><s:property value="#coll.listMap.A1B3"/></td>
  ...
 <……


如果我粘一百遍以后不可以迭代你就等着我骂人,迭代成功了就"3q",顺便给你分。。
[其他解释]
引用:
楼上看错了,你装的是什么?

只有一维,只有一个Map,把所有的数据,都装在这一个Map里,行+列做Key,count做value。

迭代的#后面写这个map的引用:
楼上看错了,你装的是什么?

只有一维,只有一个Map,把所有的数据,都装在这一个Map里,行+列做Key,count做value。

迭代的#后面写这个map的引用。


我是按你楼上说的用List<Map<String,String>>来装的啊。。
[其他解释]
引用:
引用:如果我粘一百遍以后不可以迭代你就等着我骂人,迭代成功了就"3q",顺便给你分。。 

收起你那破分滚蛋。


哟,尼玛的还有脾气。。
[其他解释]
引用:
哟,尼玛的还有脾气。。


你妈没脾气,你爹我有脾气。

热点排行