如何在jsp中获取列表

时间:2014-08-22 13:15:34

标签: java html list jsp

AI有这个代码: fileOne.java: ...

em.persist(new Item("A1","B1","C1","A.jpg","abc"));
em.persist(new Item("A2","B2","C2","B.jpg","abc"));
em.persist(new Item("A3","B3","C3","C.jpg","abc"));

...

fileTwo.jsp:

@SuppressWarnings("unchecked")
            List<Item> myList = (List<Item>)request.getAttribute("Item");

            %>
    <span style="font-size: 150%; color: black; text-decoration: underline;">List:</span>
    <table id="Table" style="display:block;">
        <tr>
             <th>A</th>
             <th>B</th>
             <th>C</th>
        </tr>
        <% if(myList != null){
            int counter = 0;
            for (Item Citem: myList ) { %>
               <tr> 
                <td id="viewA<%=counter%>" ><%= Citem.getA()%></td>
                <td id="viewB<%=counter%>" ><%= Citem.getB()%></td>
                <td id="viewC<%=counter%>" ><%= Citem.getC()%></td>
                <td id="viewImage<%=counter%>"><img alt="itemimg" src="ItemsImage<%= Citem.getImageUrl() %>" width="52" height="52"></td>
              </tr>
              <% counter++;
                    }
                }
            else{
                %>  Empty; 
                <%}
              %>

    </table>

...

我想在HTML页面的表格中查看List<Item>。 并且我在页面中只显示“空”(以及标题“列表”)。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您使用的是实体管理器,则必须编写一个返回列表的finder方法。对于前任

Query query = em.createQuery("FROM Item item WHERE item.name = ?");
query.setParameter(1, "abc");
List<Item> items = query.getResultList();

并将项目设置为请求。

request.setAttribute("Items", items);

em.persist将只保留该对象。

答案 1 :(得分:0)

我认为你应该尝试一下

JAVA代码

List<Map> em = null;

em.add( new HashMap<String, String>(){{
            put("A","A1");
            put("B","B1");
            put("C","C1");
            put("url","url1 here");
            put("msg","message1 here");
        }});

em.add( new HashMap<String, String>(){{
            put("A","A2");
            put("B","B2");
            put("C","C2");
            put("url","url2 here");
            put("msg","message2 here");
        }});
em.add( new HashMap<String, String>(){{
            put("A","A3");
            put("B","B3");
            put("C","C3");
            put("url","url3 here");
            put("msg","message3 here");
        }});

jsp代码

<table>
    <tr>
        <th>A</th>
        <th>B</th>
        <th>C</th>
    </tr>
    <c:forEach items="${Item}" var="subItem" varStatus="theCount">
         <tr> 
             <td id="viewA<c:out value="${theCount.count}" />" ><c:out value="${subItem.A}" /></td>
             <td id="viewB<c:out value="${theCount.count}" />" ><c:out value="${subItem.B}" /></td>
             <td id="viewC<c:out value="${theCount.count}" />" ><c:out value="${subItem.C}" /></td>
             <td id="viewImage<c:out value="${theCount.count}" />"><img alt="itemimg" src="<c:out value="${subItem.url}" />" width="52" height="52"></td>
         </tr>
    </c:forEach>
</table>

尝试即使你不需要检查null如果它的null然后它返回blanck表而不抛出任何异常。

并在jsp中添加以下taglib

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>