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页面是不是写的有问题啊?
求高手帮忙看看啊!应该怎么写啊!
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页面是不是写的有问题啊?
求高手帮忙看看啊!应该怎么写啊!
<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>
如果你确定你运行了Action的话,Jsp页面<% %>用这个打打看是否到了这个页面
public void listPosts() {
List<Post> posts = ps.findAllPost();
this.setPosts(posts);
}
没有返回值,只需把posts通过setPosts到页面接收
这个地方应该用var=“post” 不用id的 看你jsp别的地方没错
set.... get....
public void listPosts(){
posts = ps.findAllPost();
}
action方法在自行完后,会自动自行setPosts
看你的action方法,又new了个List<Post> posts,这个posts在你action方法自行完成后就没了
在private 定义的那个posts却是没有值的,在自行action完后,自动把这个private 的list进行set
set.... 方法
get.... 方法
public void listPosts(){
posts = ps.findAllPost();
}
这样就可以了,你看下
返回值为 void JSP页可以加载 不影响,action方法也会运行,后台会打印属性,这也不影响,唯一影响的是你的action方法执行以后,其属性并没有传回到你加载的页面,你的JSP页之所以加载出来了,是通过其他方法加载的,而不是通过action的返回值跳转过来的;
总结就是:JSP加载了 action运行了 但是你运行的结果没有传回到JSP页。 说这么多应该明白了吧:
解决方案就是 在action中写一个返回值 return "success"; 然后struts.xml中配个result
<result name="success">这里填写你的能够看到结果的JSP页<result/>
}
晕都没跳转,你怎么让这方法跳到你的jsp页面?
public String listpost(){
return "succese";
}
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>
<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没问题的话直接这样拿值就行了