Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring: передача модели данных в JSP


Автор: schmidt 7.6.2009, 12:39
Разрабатываю веб-ориентированное приложение. Использую Спринг. Теперь собственно сабж:

Сервлет, который получает список сообщений пользователя, идентификатор которого 1(это для теста):
Код

public class ShowMessagesController implements Controller {

    private MessageDAO messageDAO;
    private StudentDAO studentDAO;

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        Collection messages = messageDAO.getMessages(1);
        Map<String, Object> model = new HashMap<String, Object>();
        Map<String, Object> messageModel = new HashMap<String, Object>();
        Iterator messageIterator = messages.iterator();
        while(messageIterator.hasNext()){
            Message message = (Message)messageIterator.next();
            Student sender = studentDAO.getStudent(message.getSenderId());
            messageModel.put("message", message);
            messageModel.put("sender", sender);
        }
        model.put("messageAmount", messages.size());
        model.put("messages", messageModel);
        return new ModelAndView("showMessagesProfessor","model", model);
    }
    
    public void setMessageDAO(MessageDAO messageDAO){
        this.messageDAO = messageDAO;
    }
    
    public void setStudentDAO(StudentDAO studentDAO){
        this.studentDAO = studentDAO;
    }
}



Теперь я пытаюсь это отобразить вьюхой showMessageProfessor.jsp:
Код

<c:forEach items="${model.messages}" var="messageModel">
            <td><img src="<c:out value="${messageModel.sender.photoPath}" />" width=10 height=20 /></td>
            <td><c:out value="${messageModel.sender.lastName}" /></td>
            <td><c:out value="${messageModel.message.text}" /></td>
</c:forEach>


В результате получаю експешин в браузере:
javax.el.PropertyNotFoundException: Property 'sender' not found on type java.util.HashMap$Entry

Подскажите как я могу передать в JSP модель данних, где у меня будут лежать сущности сообщения рядом с сущностьями студентами(отправителями) ?

Заранее благодарен!

Автор: garbuz 7.6.2009, 22:54
У тебя тут с мапами какая-то путаница. Зачем тебе две мапы, попробуй обойтись одной, все станет яснее. Потом у тебя значения в цикле будет постоянно переписываться в карту под одними и теми же ключами. В foreach ты вместо коллекции получаешь мапу.
<c:forEach items="${model.messages}" var="messageModel">
[/quote]

Автор: Старовъръ 7.6.2009, 23:38
Для того, чтоб передать несколько параметров с помощью ModelAndView, нужно пользовать его методы addObject(), addAllObjects().

Автор: schmidt 8.6.2009, 23:03
Спасибо, большое за помощь!
 Я сделал так: создал клас, в который поместил ссылки на нужные мне объекты, а потом уже екземпляры этого класа ложил в коллекцию, которую потом помещал в модель

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)