我使用spring mvc和hibernate xml映射。我在jsp中有错误:
我的jsp(storeManager.jsp):
<jsp:useBean id="albumService" type="com.example.service.AlbumService" scope="request" />
<table>
<thead>
<tr>
<th>Genre</th>
<th>Artist</th>
<th>Title</th>
<th>Price</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<%for (Album myAlbum : albumService.getAllAlbums()) { %>
<%int tempGenreId = myAlbum.getGenreId().getGenreId(); %>
<%int tempArtistId = myAlbum.getArtistid().getArtistid(); %>
<td><%=albumService.findGenreByIdFromAlbumRepository(tempGenreId).getName()%></td>
<td><%=albumService.findArtistByIdFromAlbumRepository(tempArtistId).getName()%></td>
<td><%=myAlbum.getTitle()%></td>
<td><%=myAlbum.getPrice()%></td>
<td><a href="EditAlbum?editAlbumId=<%=myAlbum.getAlbumId()%>">Edit</a></td>
<td><a href="DetailsAlbum?detailsAlbumId=<%=myAlbum.getAlbumId()%>">Details</a></td>
<td><a href="DeleteAlbum?deleteAlbumId=<%=myAlbum.getAlbumId()%>">Delete</a></td>
</tr>
<%}%>
</tbody>
</table>
我的Controller(StoreManagerController.java)
@Controller
@RequestMapping("/StoreManager")
public class StoreManagerController
{
@Autowired
private AlbumService albumService;
@Autowired
private GenreService genreService;
@Autowired
private ArtistService artistService;
@RequestMapping(value="/", method = RequestMethod.GET)
public ModelAndView getStoreManagerPage(HttpServletRequest request, HttpSession session,ModelMap model) {
logger.debug("JUST GOT STORE MANAGER PAGE");
List<Album> albumList = albumService.getAllAlbums();
model.put("albumList", albumList);
return new ModelAndView("storeManager", "albumService" , "albumService");
}
当我部署并运行时。发生以下错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/storeManager.jsp at line 18
15: <%@page import="java.util.List" %>
16: <%@page import="java.util.Map" %>
17:
18: <jsp:useBean id="albumService" type="com.example.service.AlbumService" scope="request" />
19:
20:
21: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
ch.qos.logback.classic.selector.servlet.LoggerContextFilter.doFilter(LoggerContextFilter.java:70)
root cause
java.lang.ClassCastException: java.lang.String cannot be cast to com.example.service.AlbumService
org.apache.jsp.WEB_002dINF.jsp.storeManager_jsp._jspService(storeManager_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
ch.qos.logback.classic.selector.servlet.LoggerContextFilter.doFilter(LoggerContextFilter.java:70)
如何解决此错误?
答案 0 :(得分:2)
看起来你正在创建ModelAndView对象的第三个参数是不正确的。你传入一个字符串,但是jsp:useBean标记期望它是一个AlbumService对象。
更改
return new ModelAndView("storeManager", "albumService" , "albumService");
到
return new ModelAndView("storeManager", "albumService" , albumService);