list里面存放了一个Posts对象,Posts对象里面有get,set方法。里面存放了帖子的一些信息。怎么才能将这些信息在JSP里面用  c:forEach  循环出来?

解决方案 »

  1.   


    for(int i=0;i<list.size();i++){
        Posts post=new Posts();
        post=list.get(i); 
    }
      

  2.   

    问题是:JSP 里面不允许出现JAVA代码。难道一定要将里面的东西一个个取出来,然后再ADD到另一个LIST里面吗?
      

  3.   

    什么叫不允许?<select>
    <%
    for(int i=0;i<list.size();i++){
        Posts post=new Posts();
        post=list.get(i); 
    %>
    <option><%=post.getName()%></option>
    <%
    }
    %>
    </select>
      

  4.   

    Java:JSTL遍历数组,List,Set,Map等http://www.cppblog.com/biao/archive/2010/12/23/137257.html
      

  5.   

    我知道可以这么写。但是项目要求是JSP里面不能出现JAVA代码
      

  6.   

    jstl标签  struts1/2标签都可以啊!!
      

  7.   

      JSP本来就是由HTML标签,和java代码块组成的,不允许这个说法不是很合适<%里面就允许出现java代码%>   java代码块是允许出现在jsp中的,这也是为什么model1模式是很乱的原因!
      

  8.   

    我看的有个视频教程里也说的是,JSP页面里不允许出现java代码
    可以在Servlet里把要输出的值放到request或者Session里然后用EL表达式输出
    如果你用Struts的话,可以用Struts的标签也可以输出的
      

  9.   

    首先将这个list保存在request当中。
    比如:request.setAttribute("Posts",Posts);在JSP页面可以这样循环读取:
    <c:forEach var="p" items="${requestScope.Posts}">
           ${p.id} //对应Posts中的getID方法、以此类推。       </c:forEach>不过要导入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>这个包,才能使用forEace!
      

  10.   

    顺便在说下,JSP页面除了必要的<%@ page language="java" pageEncoding="UTF-8"%>。可以全部都是java代码........
      

  11.   

    你首先把所有的Posts对象保存在一个集合中(List),再把集合保存一个作用域里面(session,request,page)
    例子:
        List<Posts> list=new ArrayList<Posts>();    request.setAttribute("Posts",list);标签就这样写:<c:forEach var="p" items="${requestScope.Posts}">
                        ${p.id} //你要循环读出的内容,p代表循环读出来Posts对象
                  </c:forEach>
    声明:${requestScope.Posts}是EL表达式 意思是在request作用域中找到名字为Posts的对象
      

  12.   

    jstl:
    首先导入工具类<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:choose>
    <c:when test="${empty userlist}">
    <tfoot><tr><td colspan="3">没有需要输出的数据!</td> </tr></tfoot>
    </c:when>
    <c:otherwise>
    <tbody>
    <c:forEach items="${userlist}" var="u">
    <tr><td>${u.username }</td>
    <td>${u.age }</td>
    <td>${u.group.groupname }</td></tr>
    </c:forEach></tbody>
    </c:otherwise>
    </c:choose>
    struts:
    首先导入框架类
    <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
    <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%>
    <table border="1">
    <thead><tr>
    <th>用户</th>
    <th>年龄</th>
    <th>所属组别</th></tr></thead>
    <logic:empty name="userlist"><tfoot>
    <tr><td colspan="3">没有需要输出的数据!</td></tr></tfoot></logic:empty>
    <logic:notEmpty name="userlist">
    <tbody>
    <logic:iterate id="user" name="userlist">
    <tr><td>
    <bean:write name="user" property="username" /></td>
    <td><bean:write name="user" property="age" /></td>
    <td><bean:write name="user" property="group.groupname" /></td></tr></logic:iterate>
    </tbody></logic:notEmpty></table>
    其中Action中主要代码写法如下
    List userList = new ArrayList();
    //做一个多个用户输出
    for(int i = 0;i < 10;i++) {
    User user = new User();
    user.setUsername("user_"+i);
    user.setAge(i);
    user.setGroup(group);
    userList.add(user);
    }  request.setAttribute("userlist", userList);
    以上两者均不会在页面出现java代码,不过后者主要依赖struts框架,前者没有依赖性,希望可以解决楼主的问题!
      

  13.   

    可以使用标签库,或jquery来获取对象内的数据
      

  14.   

    jstl标签和el表达式加在一起用就解决了啊