jsp中为何获得不了action中返回的list?急求!!!

happyking999 2012-01-16 01:31:33
action中有
private List<Post> posts;
和它的getter,setter.
jsp页面中如下:

<table width="60%">
<tr>

<td width="40%">标题</td>
<td width="20%">发帖人</td>
<td width="20%">回复数</td>
<td width="20%">最后更新</td>
</tr>
<s:iterator value="posts" id="post">
<tr>
<td><s:property value="#post.p_title" /></td>
<td><s:property value="#post.postUser.username" /></td>
<td><s:property value="#post.replyNum" /></td>
<td><s:property value="#post.lastUpdateUser.username" /></td>
</tr>
</s:iterator>
</table>


但是获取不到list的值,后台输出是有值的。
我的jsp页面是不是写的有问题啊?
求高手帮忙看看啊!应该怎么写啊!
...全文
388 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
xie616058 2012-08-14
  • 打赏
  • 举报
回复
我也有此问题
艾小仙 2012-01-16
  • 打赏
  • 举报
回复


<table width="60%">
<tr>

<td width="40%">标题</td>
<td width="20%">发帖人</td>
<td width="20%">回复数</td>
<td width="20%">最后更新</td>
</tr>
<s:iterator value="posts">
<tr>
<td><s:property value="p_title" /></td>
<td><s:property value="postUser.username" /></td>
<td><s:property value="replyNum" /></td>
<td><s:property value="lastUpdateUser.username" /></td>
</tr>
</s:iterator>
</table>

list没问题的话直接这样拿值就行了
小V小V志 2012-01-16
  • 打赏
  • 举报
回复
死了,忘了,好像不用加#这个的
licip 2012-01-16
  • 打赏
  • 举报
回复
你要确定users中有没有值。
UPC_思念 2012-01-16
  • 打赏
  • 举报
回复
貌似写的没啥问题,用java代码在页面取以下试试看list是否有值
szy3121 2012-01-16
  • 打赏
  • 举报
回复
这是我刚刚测试的代码
action中:
private List<LoginFormBean> users;
public String iteratorTest(){
users = new Vector<LoginFormBean>();
LoginFormBean lfb1 = new LoginFormBean();
LoginFormBean lfb2 = new LoginFormBean();
lfb1.setUsername("szy");
lfb1.setPassword("3121");
lfb2.setUsername("szy_9");
lfb2.setPassword("3121_9");
users.add(lfb1);
users.add(lfb2);
System.out.println(users.get(0).getUsername());
System.out.println(users.get(0).getPassword());
System.out.println(users.get(1).getUsername());
System.out.println(users.get(1).getPassword());
return "test";
}
getter()...
setter()...

struts.xml:
<package name="login" extends="struts-default" namespace="/login">
<action name="login" class="com.hyhk.struts2.action.LoginAction">
<result name="test">/iteratorTest_jsp.jsp</result>
......

JSP页:
<form action="login/login!iteratorTest" method="post">
<s:submit>提交</s:submit>
</form>
<s:iterator value="users" id="post">
<tr>
<td><s:property value="#post.username" /></td>
<td><s:property value="#post.password" /></td>
</tr>
</s:iterator>
arikara 2012-01-16
  • 打赏
  • 举报
回复
public void listpost(){


}
晕。。。都没跳转,你怎么让这方法跳到你的jsp页面?
public String listpost(){
return "succese";
}
happyking999 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hgj1024454508 的回复:]
<s:iterator value="posts" id="post">
这个地方应该用var=“post” 不用id的 看你jsp别的地方没错
[/Quote]
好像没这个属性吧,试过了,也没用的
szy3121 2012-01-16
  • 打赏
  • 举报
回复
问题出在你的action方法的返回值;
返回值为 void JSP页可以加载 不影响,action方法也会运行,后台会打印属性,这也不影响,唯一影响的是你的action方法执行以后,其属性并没有传回到你加载的页面,你的JSP页之所以加载出来了,是通过其他方法加载的,而不是通过action的返回值跳转过来的;
总结就是:JSP加载了 action运行了 但是你运行的结果没有传回到JSP页。 说这么多应该明白了吧:
解决方案就是 在action中写一个返回值 return "success"; 然后struts.xml中配个result
<result name="success">这里填写你的能够看到结果的JSP页<result/>
happyking999 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 arikara 的回复:]
private List<Post> posts=new ArrayList<Post>();
set.... 方法
get.... 方法
public void listPosts(){
posts = ps.findAllPost();
}
这样就可以了,你看下
[/Quote]
试过了,这样也不行
arikara 2012-01-16
  • 打赏
  • 举报
回复
private List<Post> posts=new ArrayList<Post>();
set.... 方法
get.... 方法
public void listPosts(){
posts = ps.findAllPost();
}
这样就可以了,你看下
happyking999 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 arikara 的回复:]
引用 12 楼 happyking999 的回复:
引用 11 楼 yanmushi 的回复:
你的跳转方式呢?

不需要跳转,页面加载的时候,自动执行action中的一个方法:
public void listPosts() {
List<Post> posts = ps.findAllPost();
this.setPosts(posts);
}
没有返回值,只需把posts……
[/Quote]
啊?我自己调用setPosts方法难道不起作用?按你说的,那我要怎么写?
arikara 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 happyking999 的回复:]
引用 11 楼 yanmushi 的回复:
你的跳转方式呢?

不需要跳转,页面加载的时候,自动执行action中的一个方法:
public void listPosts() {
List<Post> posts = ps.findAllPost();
this.setPosts(posts);
}
没有返回值,只需把posts通过setPosts到页面接收
[/Quote]
private List<Post> post=new ArrayList<Post>();
set.... get....
public void listPosts(){
posts = ps.findAllPost();
}
action方法在自行完后,会自动自行setPosts
看你的action方法,又new了个List<Post> posts,这个posts在你action方法自行完成后就没了
在private 定义的那个posts却是没有值的,在自行action完后,自动把这个private 的list进行set
敬敬11 2012-01-16
  • 打赏
  • 举报
回复
<s:iterator value="posts" id="post">
这个地方应该用var=“post” 不用id的 看你jsp别的地方没错
happyking999 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yanmushi 的回复:]
你的跳转方式呢?
[/Quote]
不需要跳转,页面加载的时候,自动执行action中的一个方法:
public void listPosts() {
List<Post> posts = ps.findAllPost();
this.setPosts(posts);
}
没有返回值,只需把posts通过setPosts到页面接收
艳沐石 2012-01-16
  • 打赏
  • 举报
回复
你的跳转方式呢?
happyking999 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zss6233305 的回复:]
Struts2表情<s:iterator 可能你还不是很清楚,建议看看你相关资料。
如果你确定你运行了Action的话,Jsp页面<% %>用这个打打看是否到了这个页面
[/Quote]
好的,我先看看,谢谢
Sammie 2012-01-16
  • 打赏
  • 举报
回复
Struts2表情<s:iterator 可能你还不是很清楚,建议看看你相关资料。
如果你确定你运行了Action的话,Jsp页面<% %>用这个打打看是否到了这个页面
Sammie 2012-01-16
  • 打赏
  • 举报
回复

<table border="1">
<tr>
<th>编号</th>
<th>书名</th>
<th>作者</th>
</tr>
<s:iterator value="#{'Spring 2.0':'李刚','Java':'张三','j2ee study':'李四'}" id="name" status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if> >
<td><s:property value="#st.count"/></td>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>

v-AUGUST-v 2012-01-16
  • 打赏
  • 举报
回复
没看明白你要做什么?
加载更多回复(6)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧