Вывести строку из массива в JSP - PullRequest
3 голосов
/ 29 апреля 2010

Я хочу сделать тест, я хочу вывести массив вопросов после отправки формы.

Я знаю, как использовать боб, я думаю, но как бы я это сделал?

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Используйте для этого JSTL <c:forEach>. Поддержка JSTL зависит от рассматриваемого сервлет-контейнера. Например, Tomcat не поставляется с JSTL из коробки. Вы можете установить JSTL, просто сбросив jstl-1.2.jar в /WEB-INF/lib своего веб-приложения. Вы можете использовать основные теги JSTL в своем JSP, объявив его согласно документации в верхней части файла JSP:

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

Вы можете найти массив (Object[]) или List в атрибуте items тега <c:forEach>. Вы можете определить каждый элемент с помощью атрибута 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>");
}
2 голосов
/ 29 апреля 2010

С 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.myProperty}
...