【问题标题】:Output a String from an array in JSP从 JSP 中的数组中输出字符串
【发布时间】:2010-04-28 22:28:27
【问题描述】:

我想做一个测验,我想在提交表单后输出一系列问题。

我知道要使用我认为的 bean,但我该怎么做呢?

谢谢

【问题讨论】:

    标签: java jsp javabeans


    【解决方案1】:

    为此使用JSTL <c:forEach>。 JSTL 支持取决于相关的 servlet 容器。例如Tomcat 不附带开箱即用的 JSTL。您可以通过将jstl-1.2.jar 放入您的Web 应用程序的/WEB-INF/lib 来安装JSTL。您可以在 JSP 中使用 JSTL core tags,方法是根据 JSP 文件顶部的文档声明它:

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

    您可以在&lt;c:forEach&gt; 标记的items 属性中找到一个数组(Object[]) 或List。您可以使用var 属性定义每个项目,以便您可以在循环内访问它:

    <c:forEach items="${questions}" var="question">
        <p>Question: ${question}</p>
    </c:forEach>
    

    这与普通 Java 中的以下内容基本相同:

    for (String question : questions) { // Assuming questions is a String[].
        System.out.println("<p>Question: " + question + "</p>");
    }
    

    【讨论】:

    • 小心使用大写字母“E”的 forEach - 拯救你自己 :)
    【解决方案2】:

    使用 JSP 2.0,它可能看起来像这样:

    <% 
    request.setAttribute( "questions", new String[]{"one","two","three"} );  
    %>   
    <c:forEach var="question" items="${questions}" varStatus="loop">  
        [${loop.index}]: ${question}<br/>  
    </c:forEach>  
    

    问题将在处理提交的代码中而不是在 JSP 中设置。

    如果您使用的是 JSP 1.2:

    <c:forEach var="question" items="${questions}" varStatus="loop">  
        <c:out value="[${loop.index}]" />: <c:out value="${question}"/><br/>  
    </c:forEach>  
    

    使用 EL 和 JSTL,如果您将对象存储在数组中而不只是字符串中,您将能够访问任何 Question 对象属性:

    ${question.myProperty}
    

    【讨论】:

    • varStatus="loop" 的意义是什么?
    • varStatus="loop" 定义了可以在循环体中使用的状态对象的名称,在本例中为loop。它可以是您喜欢的任何东西。状态对象的类型为javax.servlet.jsp.jstl.core.LoopTagStatus。在上面的示例中,loop.index 在循环体中被调用以检索当前行的索引。
    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多