Значения не отображаются в цикле c: foreach - PullRequest
2 голосов
/ 28 июля 2011

Я пытаюсь передать итератор ArrayList в JSP из класса Spring, но значения не отображаются, когда я использую цикл c: foreach. Кто-нибудь может помочь? Вот важная часть моего весеннего класса.

import org.springframework.ui.Model;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.ArrayList;

public class HelloWorldController implements Controller {
    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        logger.info("Return View");
        ArrayList<RandomNumber> random = new ArrayList<RandomNumber>();
        for (int i = 1; i <= 10; i++) {
            RandomNumber number = new RandomNumber();
            number.setNumber((int) Math.random() * 100);
            random.add(number);
        }
        ModelAndView modelAndView = new ModelAndView("helloworld.jsp");
        Model model = (Model) modelAndView.getModel();
        model.addAllAttributes(random);
        return modelAndView;
    }
}

Вот соответствующая часть моего JSP.

<table>
<c:forEach var="random" items="${random}">
<tr><td>${random.number}</td></tr>
</c:forEach>
</table>

1 Ответ

1 голос
/ 28 июля 2011

Я бы изменил строку:

model.addAllAttributes(random);

на:

model.addObject("randoms", random); 

Теперь у вас есть атрибут "случайных чисел" в контексте (добавление 's' к именичтобы решить еще одну проблему, я верю с именами вар).Затем измените jsp на (примечание random, поскольку имя переменной избегает дублирования с randoms коллекцией):

<c:forEach var="random" items="${randoms}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...