2013-07-16 182 views
0

我使用spring mvc和hibernate xml映射。我在jsp中有錯誤有關:java.lang.ClassCastException:java.lang.String不能轉換爲com.example.service.AlbumService

我的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> 

和我的控制器(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) 

我該如何解決這個錯誤?

回答

2

看起來像第三個參數,您創建ModelAndView對象的位置不正確。你傳遞的是一個字符串,但是jsp:useBean標籤期望它是一個AlbumService對象。

變化

return new ModelAndView("storeManager", "albumService" , "albumService"); 

return new ModelAndView("storeManager", "albumService" , albumService); 
+0

感謝西昂非常多,它的工作! –

+1

你能把這個標記爲答案嗎?謝謝。 – Syon

+0

@KhanhLuongVan參考[如何接受答案的工作?](http://meta.stackexchange.com/a/5235/182862) –

相關問題