一个ssh问题
初学ssh框架。对那个注射的原理有点模糊
下面是我遇到的一个问题。请大家帮忙指教
public String queryAllCatory(){
catorys = this.getCatoryManager().queryCatory();
for(int i=0; i
catory = catorys.get(i);
sub = catory.getSubcatories();
// sub.add(catory.getSubcatories().iterator().next());
// System.out.println("-----------"+ catory.getCatoryname()+":" + catory.getSubcatories().iterator().next());
// sub.add(catory.getSubcatories().iterator().next());
}
return SUCCESS;
}
上面是action代码
下面是jsp代码
<tr>
<td>
<s:property value="catoryname" />
</td>
<td>
<s:iterator value="sub">
<s:property value="subcatoryname" />
</s:iterator>
</td>
</tr>
</s:iterator>
我想在jsp页面获得值。但是我不明白为什么问题获得set集合最后一个值。他们不是一边循环一边把那个值传到jsp页面上的吗。请大家指教。
我记得前面我做过类似的好像能获得这样的值的呀。弄不明白了。折腾了两天了也不知道怎么回事
[b]问题补充:[/b]
谢谢你的回答。我在后台给打出来了。sub里面是有值的。是最后一个值,我想知道怎么把他循环里面的每一个值都在前台给显示出来,我记得前面我做过就这样能把他给显示出来。 我的意思就是把他每一个循环的值在页面都能够显示出来。
[b]问题补充:[/b]
可能还没有表达清楚。可能在循环的时候每一次向sub里面放值的时候这次放的值把上次的值给覆盖了。我就是想知道的是:能不能在每次循环的完后即在还没有覆盖就把值给在前台给获得。
:D, 大概知道你是什么意思了。其实你用list 这个Collection就完全可以达到你要的效果了。
Set 不允许有相同的对象如果你一定要把相同的对像放在一个Collection中的话那建议用List好了,这样就不会存在一个覆盖问题了。
能不能在每次循环的完后即在还没有覆盖就把值给在前台给获得
不行,看一下Struts2 的流程图。顺便建议看一下Struts2的时序图。从页面到Action再到页面其实是一整个流程。Web Application都是按照这个流程走的。
首先楼主的问题表述的不是很清楚,究竟有没有在页面上打印出值来?
如果没有,首先要DEBUG一下在ACTION里面的sub变量有没有赋到值,有没有为这个sub变量写正确的set 和get方法。
第二,ACTION 里面的值是先放到Value Stack里面。然后JSP页面根据变量的值到VS里面去取值,然后循环。
具体Struts2的流程图可以参考
http://blog.csdn.net/bryanliu1982/archive/2009/04/29/4138001.aspx