在JSP中使用JSTL标记从servlet打印数组值

时间:2014-04-10 07:14:59

标签: arrays jsp servlets jstl jsp-tags

我遇到从Servlet发送的JSP页面打印(显示)数组数据的问题。以下是代码和JSP页面。请帮助我追踪我正在犯的错误。

我的服务器代码:

//inside doGET method
String title="Reading cookies example";
String[] info={"What the hell!!","Nothing"};

request.setAttribute("title", title);
request.setAttribute("name", info);

RequestDispatcher rd=request.getRequestDispatcher("myjsp.jsp");
rd.forward(request, response);

我的JSP代码:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%-- 
    Document   : myjsp
    Created on : Apr 5, 2014, 1:19:35 PM
    Author     : sabin
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <c:forEach var="pagetitle" items="title">
            <h1>${title}</h1>
        </c:forEach>
        <c:forEach var="data" items="{name}" >
            <C:OUT value="${data}">  </C:OUT> 
            <h1>${name}</h1>

        </c:forEach>


   </body>
</html>

输出页面:

阅读cookies示例 [Ljava.lang.String; @ 195019d

而不是打印&#34;什么是地狱&#34;什么都不打印[Ljava.lang.String; @ 195019d。是什么原因和我错过了什么?如果有人能帮我解决这个问题,我将非常感激。提前感谢你。

3 个答案:

答案 0 :(得分:1)

试试这个,

    ${title}
    <c:forEach var="temp" items="${name}">
        <c:out value="${temp}"></c:out>
    </c:forEach>

因为title不是数组,所以它只是一个字符串也读取此内容以了解for-each tag的功能 会打印这样的输出,

阅读饼干示例怎么回事!!没什么

答案 1 :(得分:0)

请更正foreach循环,如下所示

 <c:forEach var="data" items="${requestScope.name}" >

您的代码应该是这样的

<c:forEach var="data" items="${requestScope.name}" >
            <c:out value="${data}">  </c:out> 
            <h1>${name}</h1>
</c:forEach>


1) <c:out value="${name}" />
2) <c:out value="${requestScope.name}" />

requestScope当你绝对希望你的对象来自请求时,而不是来自页面,会话或应用程序范围,而使用$ {name}将在页面中搜索name属性,然后在请求中,然后在会话,然后在应用程序中。

让我们说JSP中的其他一些代码在页面范围中设置了一个name属性。但是您想要访问请求中的名称:您被迫使用requestScope。

让我们说会话可能有一个名称属性。如果JSP忘记在请求范围中设置name属性,则不使用requestScope.name将返回会话范围的名称。

如果JSP片段的目标是访问封闭JSP中设置的内容,那么这个JSP片段可能是JSP标记,您应该将该名称作为参数传递给此标记。

答案 2 :(得分:0)

放置表格格式

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

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>myjsp.jsp</title>
</head>
<body>
    <h1>${title} </h1>
    <br/><br/><br/>
    <table border="1">
             <c:forEach var="temp" items="${name}">     
            <tr>              
                <td>
                    <c:out value="${temp}" escapeXml="false" ></c:out>
                </td>
            </tr>
        </c:forEach>
    </table>
    
</body>
</html>