2014-12-04 30 views
0

您好我是Spring mvc的新手。我在我的一個控制器中使用ModelAndViewas返回對象。 我不理解如何訪問返回給jsp顯示的Model對象。 這是我的代碼:如何在jsp中使用從spring mvc返回的模型對象

@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抽象。

當Spring完成調用您的處理程序方法時,它會將其收集的所有模型屬性移動到HttpServletRequest屬性。

您可以用JSP EL表達式

${some.attribute} 

訪問這些,但不要試圖在scriptlet中把EL像你在這裏做

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

我嘗試不使用scriplets第一次。它不起作用。 – kumuda 2014-12-04 18:00:02

+0

@ kumuda _它沒有工作._不是很有用。編輯你的問題。解釋你所嘗試的,爲什麼,以及**如何不起作用。解釋你預期會發生什麼以及發生了什麼。 – 2014-12-04 18:00:41

0

爲了你的JSP頁面中能夠顯示你的對象的屬性,你需要實現它的公共getter。

在你的情況,你Song類有一個屬性title,但因爲它是一個私有屬性你會需要一個叫做getTitle()返回title屬性的公共方法。如果你寫這樣的東西,你的JSP將能夠渲染title

<input type="text" value="${song.title}" name="title" disabled /> 
相關問題