嗨,我是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;
}
答案 0 :(得分:2)
您不通过JSP访问模型。 Model
(以及所有相应类型:ModelAndView
,ModelMap
等)是围绕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 />