如何在jsp中使用spring mvc返回的Model对象

时间:2014-12-04 17:54:40

标签: java spring jsp spring-mvc

嗨,我是Spring mvc的新手。我在我的一个控制器中使用ModelAndViewas返回对象。 我不了解如何访问返回给jsp进行显示的Model对象。 这是我的代码:

   @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 个答案:

答案 0 :(得分:2)

您不通过JSP访问模型。 Model(以及所有相应类型:ModelAndViewModelMap等)是围绕HttpServletRequest属性的Spring抽象。

当Spring完成调用您的处理程序方法时,它会将收集的所有模型属性移动到HttpServletRequest属性。

您可以使用EL表达式

在JSP中访问它们
${some.attribute}

但不要试图将EL放在像这里一样的scriptlet中

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

答案 1 :(得分:0)

为了让您的JSP页面能够显示对象的属性,您需要实现它的公共getter。

在您的情况下,您的班级Song有一个属性title,但由于它是私有属性,您需要一个名为getTitle()的公共方法,返回title属性。如果您编写类似的内容,您的JSP将能够呈现title

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