2014-12-04 2 views
0

Привет Я новичок в Spring mvc. Я использую возвращаемый объект ModelAndViewas в одном из моих контроллеров. Я не понимаю, как получить доступ к объекту модели, возвращенному в jsp для отображения. Это мой код:Как использовать объект модели, возвращенный с весны mvc в jsp

@Controller 
    public class GetSongServlet extends HttpServlet { 

    @RequestMapping(value = "/getSong", method = RequestMethod.GET) 
public ModelAndView getSong(@RequestParam(value = "songTitle", required = false) String 
title) { 


    MusicPlayerService service = MusicPlayerServiceImpl2.getInstance(); 
    try { 
     Song song = service.getSong(title); 
     System.out.println(song.getSongId()); 
     // request.setAttribute("song", song); 
     /* 
     * RequestDispatcher requestDispatcher = request 
     * .getRequestDispatcher("viewSong"); 
     * requestDispatcher.forward(request, response); 
     */ 
     return new ModelAndView("viewsong", "song", song); 

    } 
} 



    <input type="text" class="form-control focusedInput" id="title" 
         value=<%="${song.title}"%> name="title" disabled /> 
<input type="text" class="form-control focusedInput" id="album" 
         value=<%= "${song.album.albumName}"%> name="album" disabled /> 
<input type="text" class="form-control focusedInput" id="artist" 
         value=<%= "${song.artist}"%> name="artist" disabled />......... 



public class Song{ 
private int songId; 
private Album album; 
private String title; 
private int rating; 
private String artist; 
private String composer; 
private Genre genre; 
} 

ответ

2

Вы не имеют доступа к модели через JSP. Model (и все соответствующие типы: ModelAndView, ModelMap и т. Д.) Представляет собой абстракцию весны вокруг атрибутов HttpServletRequest.

Когда Spring завершит вызов метода вашего обработчика, он переместит все атрибуты модели, которые он собрал, в атрибуты HttpServletRequest.

Вы можете получить доступ к ним в JSP с выражением EL

${some.attribute} 

, но не пытайтесь поставить EL в скриптлете, как вы делаете здесь

<%= "${song.artist}"%> 
+0

Я пробовал, не используя сначала скрипты. Это не работает. – kumuda

+0

@kumuda _It не работает. Не очень полезно. Измените свой вопрос. Объясните, что вы пробовали, почему и ** как ** это не сработало. Объясните, что вы ожидали, и что произошло на самом деле. –

0

Для вашей страницы JSP быть способный отображать свойство вашего объекта, вам нужно реализовать публичный получатель.

В вашем случае, ваш класс Song имеет атрибут title, но так как это частный атрибут, который будет нужен публичный метод, называемый getTitle() возвращение атрибут title. Ваш JSP сможет отобразить title, если вы напишете что-то вроде этого:

<input type="text" value="${song.title}" name="title" disabled /> 
Смежные вопросы