这个问题昨晚发过一个帖子,起初以为是service或者action里的错误,没有从数据库取到值。
后来经论坛里朋友指点,用size()发现可以获得service里的取值...然后怀疑是往request里放出来问题。
今早起来把练习demo从新做一遍,同样问题,但是发现是前台输出的问题了,下面跟code:
- Java code
public String execute() throws Exception{ Map request = (Map)ActionContext.getContext().get("request"); request.put("list", this.service.findAllUser()); System.out.println("检验数据:"+this.service.findAllUser().size()); System.out.println("检验数据:"+request.size()); return SUCCESS;
控制台结果是:检验数据:4
检验数据:2
于是又在jsp检验:
- HTML code
验证数据是否已传送到jsp页面: <s:property value="#request.list.get(3).userName"/> <s:property value="#request.list.get(3).userPassword"/> <hr> <table border="1"> <tr> <td> ID: </td> <td>Name:</td> <td>Password:</td> </tr> <s:iterator value="#request.list" id="us"> <tr> <td> <s:property value="#us.userId"/> <br></td> <td> <s:property value="#us.userName"/> <br></td> <td> <s:property value="#us.userPassword"/> </td> </tr> </s:iterator> </table>
结果是(就不上图了,直接拉内容,其中‘空’是页面上出了表格框架但是内容为空的):
验证数据是否已传送到jsp页面: travis 123
--------------------------------------------
ID: Name: Password:
空 空 空
空 空 空
空 空 空
空 空 空
由此可见用iterator迭代此集合时是可以知道集合内有4个迭代对象,并以此压到栈顶做输出了。
但是输出值为空,说明:<s:property value="#us.userName"/> 此句有错误。
可是我不认为此句有错误诶...
求指点,在线等...
------解决方案--------------------
我也是说,我刚刚回了的帖子,怎么可能没回上呢。
------解决方案--------------------
<s:iterator value="#request.list" var="us">
再不行就去掉"#us.userName"的#试试
------解决方案--------------------
我讨厌用struts标签,struts1,2的我都不喜欢
直接用JSTL 有这么多麻烦事么?
------解决方案--------------------
用jstl吧 简单 大众
------解决方案--------------------
看不出什么问题 如果 不行换个方法
改成
request.setAutributter();
------解决方案--------------------
struts没有想象中的那么不堪。不过楼主的用法确实是有点麻烦。既然用到struts了,还动不动就"#request"作甚。
------解决方案--------------------
request不行的话,那你就先在action中把它保存到session中,在页面在用#session得到,我怀疑你是success的页面没有指向你输出结果的这个页面。另外还有一种方式就是在action中定义list,然后set,get,呵呵,希望你早点找到解决方案。