2016-01-28 2 views
0

Я хочу показать данные из массива с помощью JSP.Как получить значения из массива в jsp

У меня есть три файла:

  1. index.jsp:

    <%@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> 
         <h1>Hello World! </h1> 
         <form name="Input Name Form" action="response.jsp"/> 
         <p> Enter your name:</p> 
          <input type="text" name="name"/> 
          <input type="submit" value="ok" /> 
        </form> 
    
        </body> 
    </html> 
    
  2. response.jsp:

    <%@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> 
         <h1>Hello World!</h1> <br> 
         <jsp:useBean id="aaa" scope="page" class="A.a" /> 
         <jsp:setProperty name="aaa" property="name" value="<%= request.getParameter("name")%>" /> 
         <jsp:getProperty name="aaa" property="name" /> 
    
        </body> 
    </html> 
    
  3. a.java:

    public class a { 
        public a() 
        {} 
        private String name; 
    ArrayList() array_list = new ArrayList(); 
    
    
        public String getName() { 
         return name; 
        } 
    
        /** 
        * @param name the name to set 
        */ 
        public void setName(String name) { 
         this.name = name; 
        //some magic to fill array_list with values 
    
        } 
    } 
    

Мой вопрос:

Какое выражение следует использовать в JSP, чтобы получить значения из array_list в a.java?

Я знаю, что есть заявление

<c:forEach> </c:forEach> 

, но я не знаю, как его использовать.

+1

Я редактировал свой вопрос, чтобы стать более ясным и легче читать. Ваш код был помечен как код * и * blockquote (строки, начинающиеся с '>'), поэтому я удалил блок-таблицы. Чтобы получить правильный отступ внутри списка, код должен быть отступом 8 пробелов, а не только 4, но это действительно деталь. Я выделил встроенный код и имена файлов с backticks, удалил ВСЕ CAPS (которые можно воспринимать как грубые) и «спасибо», что не обязательно. –

ответ

1

Аналогичный вопрос был задан здесь: Iterate ArrayList in JSP

Короче говоря:

<c:forEach items="${aaa.array_list}" var="item"> 
    ${item} 
</c:forEach> 
+0

не работает, по каким-либо причинам. Я просто поместил этот фрагмент в свой код, но ничего не произошло. Кажется, я что-то упустил. – Imugi

+0

Фрагмент должен показывать только, как итерации и отображать значения. Конечно, вы должны заменить $ {myList} на недвижимость. В вашем случае $ {aaa.array_list}, который все равно ничего не отобразит, так как вы не заполняете список в a.java. – Frank

1
<c:forEach items="${dataDetail}" var="data" varStatus="item"> 
    <c:out value="${data.id}"/> 
</c:forEach>  

Здесь «dataDetail» это имя ключа, где вы установили свой список в контроллере.

(сеанс или запрос) .setAttribute ("dataDetail", --- Список данных типа данных класса ---);

Приведенный выше код аналогичен

for(Data data : dataDetail){ 
    System.out.println(data.getId()); 
} 
0

использования JSTL.

Попробуйте это:

Имейте это в верхней части JSP:

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

и код для отображения данных

<c:forEach begin="0" end="${fn:length(array_list) - 1}" var="index"> 
    <tr> 
     <td><c:out value="${array_list[index]}"/></td> 
    </tr> 
</c:forEach> 
+0

не работает ((ничего не показывать) – Imugi