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页面是不是写的有问题啊?
求高手帮忙看看啊!应该怎么写啊!

解决方案 »

  1.   

    你这个Action的方法有运行到吗?
      

  2.   

    你前面action定义的是posts,你后面jsp中是用post.属性取值,建议全部改成post
      

  3.   

    jsp中的value用的是posts,id是post,这个应该没问题的
      

  4.   


    <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>
      

  5.   

    Struts2表情<s:iterator 可能你还不是很清楚,建议看看你相关资料。
    如果你确定你运行了Action的话,Jsp页面<% %>用这个打打看是否到了这个页面
      

  6.   

    不需要跳转,页面加载的时候,自动执行action中的一个方法:
    public void listPosts() {
    List<Post> posts = ps.findAllPost();
    this.setPosts(posts);
    }
    没有返回值,只需把posts通过setPosts到页面接收
      

  7.   

     <s:iterator value="posts" id="post">
    这个地方应该用var=“post”  不用id的    看你jsp别的地方没错
      

  8.   

     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
      

  9.   

    啊?我自己调用setPosts方法难道不起作用?按你说的,那我要怎么写?
      

  10.   

    private List<Post> posts=new ArrayList<Post>();
      set.... 方法
      get.... 方法
     public void listPosts(){
     posts = ps.findAllPost();
     }
     这样就可以了,你看下
      

  11.   

    问题出在你的action方法的返回值;
    返回值为 void  JSP页可以加载 不影响,action方法也会运行,后台会打印属性,这也不影响,唯一影响的是你的action方法执行以后,其属性并没有传回到你加载的页面,你的JSP页之所以加载出来了,是通过其他方法加载的,而不是通过action的返回值跳转过来的;
    总结就是:JSP加载了   action运行了  但是你运行的结果没有传回到JSP页。 说这么多应该明白了吧:
    解决方案就是 在action中写一个返回值  return "success"; 然后struts.xml中配个result
    <result name="success">这里填写你的能够看到结果的JSP页<result/>  
      

  12.   

     public void listpost(){ 
    }
      晕都没跳转,你怎么让这方法跳到你的jsp页面?
      public String listpost(){
      return "succese";
    }
      

  13.   

    这是我刚刚测试的代码
    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>
      

  14.   

    貌似写的没啥问题,用java代码在页面取以下试试看list是否有值
      

  15.   

    <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没问题的话直接这样拿值就行了