[英]Spring MVC + Hibernate + JSP
我是使用这些工具的新手,所以您可能会觉得这很愚蠢。
尝试访问我的Web应用程序时(我应该在其中显示数据库“用户”表中的每个用户),我收到此错误。
HTTP ERROR 500
Problem accessing /maven-archetype-webapp/index. Reason:
Neither BindingResult nor plain target object for bean name 'contact' available as request attribute
Caused by:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'contact' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
at org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:130)
at org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:120)
at org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:90)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
at org.apache.jsp.WEB_002dINF.jsp.usuario_jsp._jspx_meth_form_label_0(org.apache.jsp.WEB_002dINF.jsp.usuario_jsp:299)
at org.apache.jsp.WEB_002dINF.jsp.usuario_jsp._jspx_meth_form_form_1(org.apache.jsp.WEB_002dINF.jsp.usuario_jsp:222)
at org.apache.jsp.WEB_002dINF.jsp.usuario_jsp._jspService(org.apache.jsp.WEB_002dINF.jsp.usuario_jsp:106)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:266)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
因此,我将向您发送我的控制器,我的JSP和我的服务实现。
UsuarioController.java
package org.maven.archetypes.Project.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.maven.archetypes.Project.form.Usuario;
import org.maven.archetypes.Project.service.UsuarioService;
@Controller
public class UsuarioController {
@Autowired
private UsuarioService usuarioService;
@RequestMapping("/index")
public String listUsers(Map<String, Object> map) {
map.put("usuario", new Usuario());
map.put("usuarioList", usuarioService.listUsuario());
return "usuario";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUsuario(@ModelAttribute("user")
Usuario user, BindingResult result) {
usuarioService.addUsuario(user);
return "redirect:/index";
}
@RequestMapping("/delete/{email}")
public String deleteUsuario(@PathVariable("email")
String email) {
usuarioService.removeUsuario(email);
return "redirect:/index";
}
}
Usuario.jsp
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<!--
<h3>Usuarios</h3>
<c:if test="${!empty usuarioList}">
<table class="data">
<tr>
<th><spring:message code="label.firstname"/></th>
<th><spring:message code="label.email"/></th>
<th> </th>
</tr>
<c:forEach items="${usuarioList}" var="usuario">
<tr>
<td>${usuario.lastname}, ${usuario.firstname} </td>
<td>${usuario.email}</td>
<td><a href="delete/${usuario.email}">Eliminar</a></td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
UsuarioServiceImpl.java(接口UsuarioService.java的实现)
@Service
public class UsuarioServiceImpl implements UsuarioService {
@Autowired
private UsuarioDAO UsuarioDAO;
@Transactional
public void addUsuario(Usuario user) {
UsuarioDAO.addUsuario(user);
}
@Transactional
public List<Usuario> listUsuario() {
return UsuarioDAO.listUsuario();
}
@Transactional
public void removeUsuario(String email) {
UsuarioDAO.removeUsuario(email);
}
}
我不知道是否有必要继续使用DAO ...问题是错误将名称命名为“ Contact”,而我什至根本不使用该名称(我使用“ Usuario”)。 是的,在您问之前,我确实替换了一些确实带有“联系”一词的互联网代码,但我将它们全部替换为我的代码。 所以也许这引起了混乱,但我现在真的迷路了。 希望您能够帮助我。 如果您不了解某些内容,请不要犹豫。
非常感谢!
您只是将对象放入地图中。 您需要将对象放入http请求。 Spring具有模型对象Model和ModelAndView ,如下所示:
<code>
@RequestMapping("/index")
public String listUsers(Model model) {
model.addAttribute("usuario", new Usuario());
model.addAttribute("usuarioList", usuarioService.listUsuario());
return "usuario";
}
</code>
要么
<code>
@RequestMapping("/index")
public ModelAndView listUsers() {
ModelAndView mav = new ModelAndView("usuario");
mav.addObject("usuario", new Usuario());
mav.addObject("usuarioList", usuarioService.listUsuario());
return mav;
}
</code>
我可以在这里建议您删除准备构建的目标文件夹,然后重新创建构建并运行,然后运行,如果问题仍然存在,请告知我们所需的文件。 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.