当前位置:编程学习 > JAVA >>

struts2 <s:iterator...>问题,在线等

Bean
public Class Student {
    private int id;
    private String name;
.....
}
Action

private List<Student> students;

jsp:

<s:iterator value="students" id="name">
   <s:property value="student.name"/>
</s:iterator>

遍历student列表,显示student的名字,但是jsp里面不显示,求助,在线等 --------------------编程问答-------------------- 把action中的List对象,在页面用<s:iterator>把List的内容循环显示出来
//首先有一个User对象
public class User {
      private Integer userId;
      private String userName;
      private String userPwd;

      //get和set方法
      ...........
}

//action中的代码
List list = new ArrayList();

User user1 = new User();
user1.setUserId(1);
user1.setUserName("zhangsan");
user1.setUserPwd("123456");

list.add(user1);

User user2 = new User();
user2.setUserId(2);
user2.setUserName("lisi");
user2.setUserPwd("1234");

list.add(user2);

在把list放在request中,好在jsp页面中能拿到

jsp页面中的代码

<table>
<s:iterator value="list" id="别名">//这个id加不加都没事
   <tr>
        <td><s:property value="user.userId"/></td>//这也可以写成<s:property value="别名.user.userId"/>

        <td><s:property value="user.userName"/></td>
        <td><s:property value="user.userPwd"/></td>
   </tr>
</s:iterator>
</table>
--------------------编程问答-------------------- <s:iterator value="students" var="student" id="name">
  <s:property value="student.name"/>
</s:iterator>
试试看 --------------------编程问答-------------------- <s:iterator value="students" id="student">
  <s:property value="student.name"/>
</s:iterator>
--------------------编程问答-------------------- <s:iterator var="user" status="userSt" value="list">
            <tr id="<s:property value='#user.id'/>">
                <td align="right"> <s:property value="#userSt.index + 1"/></td>
                <td align="center"> <s:property value="#user.account"/></td>
                <td align="center"> <s:property value="#user.name"/></td> 
            </tr>
</s:iterator>
用这样子试下,我上面的代码是正常的。 --------------------编程问答-------------------- <s:iterator value="students" id="usr">
  <s:property value="#user.name"/></s:iterator>



value里面应该写#后面id然后跟属性 这样试一下 --------------------编程问答--------------------
引用 5 楼 qingshan002008 的回复:
<s:iterator value="students" id="user">
  <s:property value="#user.name"/></s:iterator>



value里面应该写#后面id然后跟属性 这样试一下


刚才iterator 里面的id写错了 --------------------编程问答-------------------- <s:iterator value="students" id="name">
  <s:property value="name"/>
</s:iterator>



<s:iterator value="students" id="name">
  <s:property value="#name.name"/>
</s:iterator> --------------------编程问答-------------------- <s:iterator value="students" id="student">
  <s:property value="#student.name"/>
</s:iterator>


<s:iterator value="students" id="student">
  ${student.name}
</s:iterator> --------------------编程问答-------------------- 通常页面上的id就是给页面取用
如果设错了就无法拿到 --------------------编程问答-------------------- 以上都是同一种做法,我教你另外一个方法:用struts2的标签<s:select>
Users.java

private  String  userId;
private String  userName;

.....  省略setter/getter
==============================
action里

private  Users  user ;// 省略 setter /getter方法
private  List userList;//省略 setter /getter方法
(此处的userList 只存放userName 属性,且为jsp页面的list的值)

//这里dao你自己设计,注意的是sql或者hql里面只去名字属性,如 Hibernate中String hql="select   userName   from  Users " 或Sql 语句中String sql="select user_name from  Users" 



public  String init(){
     userList= dao.getUserNameList();

return  INPUT;
}


struts.xml
 关键的那个return
 <result  name="input">/user.jsp</result>  // 斜杠别漏了  

user.jsp页面

<s:select  name="user.userName" list="uesrList" /> 无须用<s:iterater>迭代出来


最后想强调下:一定要经过action 转向到Jsp页面,效果才能出来..

--------------------编程问答-------------------- <s:iterator value="students" id="usr">
  <s:property value="name"/></s:iterator> --------------------编程问答--------------------



<s:iterator value="students" id="student">
  <s:property value="#student.name"/>
</s:iterator>


--------------------编程问答-------------------- 建议不要用S标签,我们项目在小型机上部署后,这东西超级耗内存! --------------------编程问答-------------------- 应该是这样吧?
<s:iterator value="students">
  <s:property value="name"/>
</s:iterator> --------------------编程问答--------------------
引用 14 楼 ol_beta 的回复:
应该是这样吧?
<s:iterator value="students">
  <s:property value="name"/>
</s:iterator>



应该是这样的 --------------------编程问答-------------------- <s:iterator var="students" value="#session.students">
${students.Name}
</s:iterator>
value="#session.students"这个students是存在session中的值。
写成这样的吧,我一直都这样写的。或者写这种
<c:forEach var="lists" items="${sessionScope.students}">
${students.Name}
</c:forEach>
items="${sessionScope.students}"这个students是存在session中的值。
这两中都可以遍历表。 --------------------编程问答-------------------- 不好意思,写错了,是这样的
<c:forEach var="lists" items="${sessionScope.students}">
${lists.Name}
</c:forEach>
items="${sessionScope.students}"这个students是存在session中的值。
--------------------编程问答--------------------
引用楼主 fateheavens 的回复:
Bean
public Class Student {
  private int id;
  private String name;
.....
}
Action

private List<Student> students;

jsp:

<s:iterator value="students" id="name">
  <s:property value="st……

帮我看看我的,
 <s:iterator value="serverList" id="list">as
              <s:property value="serverList.size"/>
              <s:property value="serverinfo.serverName"/>
              </s:iterator>

这个size能打出来是1,而且serverName里面也有值,为什么没有打印出来呢? --------------------编程问答-------------------- 两种方式:第一种
<s:iterator value="students">
  <s:property value="name"/>
</s:iterator> 

这种方法是因为struts2会将students中得每一个student对象放入当前valueStack中的root区域中,你可以直接取到对应属性的值

第二种    
<s:iterator value="students" var="student">
  <s:property value="#student.name"/>
</s:iterator> 
第二种方式是将students中的每一个对象赋值给student变量,然后将该变量放入valueStack的context区域中,所以要使用#student.name才能取到值
谢谢
                   --------------------编程问答-------------------- 学习学习~~~~
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,