问题描述
我有以下jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:form action="save_event" modelAttribute="eventForm" method="post">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Create Event</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12 form-group">
<label for="eventNameInput">Name:</label>
<form:input id="eventNameInput" class="form-control" type="text" path="eventName" />
</div>
</div>
<div class="row">
<div class="col-xs-12 form-group">
<label for="eventStartInput">Start:</label>
<div class='input-group date' id='datetimepicker1'>
<form:input id="eventStartInput" class="form-control" type="text" path="startDate" />
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 form-group">
<label for="eventEndInput">End:</label>
<div class='input-group date' id='datetimepicker2'>
<form:input id="eventEndInput" class="form-control" type="text" path="endDate" />
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 form-group">
<label for="eventDescInput">Description:</label>
<form:textarea id="eventDescInput" class="form-control" path="description"></form:textarea>
</div>
</div>
</div>
<div class="modal-footer">
<input type="submit" value="Submit" class="btn btn-primary" />
<input type="reset" class="btn btn-default" value="Reset" />
</div>
</form:form>
<script type="text/javascript">
$(function () {
$('#datetimepicker1').datetimepicker({
sideBySide: true,
format: "DD.MM.YYYY HH:mm"
});
$('#datetimepicker2').datetimepicker({
sideBySide: true,
format: "DD.MM.YYYY HH:mm"
});
});
</script>
和以下控制器:
@Controller
public class EventCreateController {
@RequestMapping(value="/create_event", method=RequestMethod.GET)
public String createEvent(Model model) {
model.addAttribute("eventForm", new EventForm());
return "create_event";
}
@RequestMapping(value="/save_event", method=RequestMethod.POST)
public String eventSubmit(@ModelAttribute("eventForm") EventForm form, Model model) {
List<Event> eventList = new ArrayList<Event>();
model.addAttribute("eventList", eventList);
return "redirect:/welcome";
}
}
但是,每当提交表单时,我都会收到错误消息:客户端发送的请求在语法上是不正确的。
我是通过邮寄发送表单,并希望通过邮寄表单。 我正在处理“ / save_event”,并且期望结果在“ / save_event”。
有什么想法吗?
编辑:这是application-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.afterguard.sailplanner.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
和web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>SailPlanner</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>sailplanner</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sailplanner</servlet-name>
<url-pattern>/welcome</url-pattern>
<url-pattern>/users</url-pattern>
<url-pattern>/create_event</url-pattern>
<url-pattern>/save_event</url-pattern>
</servlet-mapping>
</web-app>
1楼
动作不应该只是/save_event
而不是${context}/save_event.jsp
吗?
-
在使用
form:form
,应自动注意上下文的前缀,即form taglib。 -
为什么
.jsp
后缀?
2楼
RequestMapping值应与表单的操作相同。 使用form标记代替form:form,不要在表单动作或控制器中声明.jsp扩展名,只需在applicationContext.xml中定义一个InternalResourceViewResolver
码:
applicationContext.xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
编辑:将/ pages /替换为您的查看页面位置。
jsp:
<form action="save_event" modelAttribute="eventForm" method="post">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Create Event</h4>
</div>
</form>
控制器:
@Controller
public class EventCreateController {
@RequestMapping(value="/save_event", method=RequestMethod.POST)
public String eventSubmit(@ModelAttribute("eventForm") EventForm form, Model model) {
List<Event> eventList = new ArrayList<Event>();
model.addAttribute("eventList", eventList);
return "redirect:/welcome";
}
}
希望这对您有用。