【发布时间】:2015-08-12 12:25:39
【问题描述】:
我让控制器假设处理表单信息并将其发送到数据库(现在它只是打印)但是当我单击“提交”按钮时,进入浏览器的 URL 是错误的,因为这意味着控制器在我的 jsp 中显然不是的文件夹。如何解决这个问题?
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.method.support.ModelAndViewContainer;
import wymysl.database.Person;
import wymysl.database.PersonsRepository;
@RequestMapping("/register")
public class RegisterController {
PersonsRepository repo;
@RequestMapping(value = "/addPerson", method = RequestMethod.POST)
public String register(@ModelAttribute("Person") Person person, HttpServletRequest request ) {
System.out.println(""+person.getName());
return "index";
}
这是表单标题
<form class="form-register" method="POST" action="/register/addPerson" commandName="Person">
Web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>MyApp</display-name>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
【问题讨论】:
-
对于初学者,将您的请求映射更改为 /register,而不仅仅是注册。为什么需要 HttpServletRequest?并将操作更改为 addPerson 或您正在做的任何事情。
-
用于从表单中获取属性。现在更改了一些代码,但仍然无法正常工作。看看
-
不,只是改变类内部注册方法顶部的请求映射,保持Controller注解为类。
-
我可以回答您的问题,但我需要查看您的 web.xml(映射到调度程序的 url 模式)以及您的控制器是如何连接的。
-
你在
/下挂载了webapp吗?因为否则您的控制器将位于/APP_NAME/register/addPerson。对于这些情况,您应该使用 c:url 标签:<c:url value="/register/addPerson"/>
标签: java spring model-view-controller web-applications