Java 不支持Post方法
我试图使用POST将表单连接到另一个页面,但我不断收到错误:Java 不支持Post方法,java,spring,spring-mvc,jstl,Java,Spring,Spring Mvc,Jstl,我试图使用POST将表单连接到另一个页面,但我不断收到错误: Request method 'POST' not supported 控制器中的handleNext方法如下所示: @RequestMapping(value = PAGE_NAME, method = RequestMethod.POST) public String handleNext(ModelMap map, HttpServletRequest request, @ModelAttribute("indexBa
Request method 'POST' not supported
控制器中的handleNext方法如下所示:
@RequestMapping(value = PAGE_NAME, method = RequestMethod.POST)
public String handleNext(ModelMap map, HttpServletRequest request,
@ModelAttribute("indexBacking") IndexBacking bo, BindingResult result) {
return "redirect:/" + GameController.PAGE_NAME;
}
@RequestMapping(value = PAGE_NAME, method = RequestMethod.GET)
public String handleBasicGet(ModelMap map, HttpServletRequest request) {
return MODEL_NAME;
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
游戏控制器上的GET方法如下所示:
@RequestMapping(value = PAGE_NAME, method = RequestMethod.POST)
public String handleNext(ModelMap map, HttpServletRequest request,
@ModelAttribute("indexBacking") IndexBacking bo, BindingResult result) {
return "redirect:/" + GameController.PAGE_NAME;
}
@RequestMapping(value = PAGE_NAME, method = RequestMethod.GET)
public String handleBasicGet(ModelMap map, HttpServletRequest request) {
return MODEL_NAME;
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
My Web.xml如下所示:
@RequestMapping(value = PAGE_NAME, method = RequestMethod.POST)
public String handleNext(ModelMap map, HttpServletRequest request,
@ModelAttribute("indexBacking") IndexBacking bo, BindingResult result) {
return "redirect:/" + GameController.PAGE_NAME;
}
@RequestMapping(value = PAGE_NAME, method = RequestMethod.GET)
public String handleBasicGet(ModelMap map, HttpServletRequest request) {
return MODEL_NAME;
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
我认为您正在从handleNext控制器重定向到url 使用post方法但不使用目标控制器(消息重定向到的控制器) 只有一个Get方法, 所以,请更改“进入游戏控制器内部”并重试。
如果有任何问题,请告诉我。我认为您正在从handleNext控制器重定向到url 使用post方法但不使用目标控制器(消息重定向到的控制器) 只有一个Get方法, 所以,请更改“进入游戏控制器内部”并重试。 如果您使用的是return“redirect:/”+GameController.PAGE\u NAME;到另一个控制器,然后指定该控制器的完整url路径。现在您正在重定向到同一个控制器,而不是另一个控制器。如果您使用的是return“redirect:/”+GameController.PAGE\u NAME;到另一个控制器,然后指定该控制器的完整url路径。现在,您正在重定向到同一个控制器,而不是另一个控制器 不支持请求方法“POST” 当出现以下错误时,spring会抛出此错误:
- HTML表单操作有一些URL,其方法为
,您没有任何控制器方法来处理对该URL的POST请求POST
- POST处理程序方法中缺少或无效的
@ModelAttribute
public class IndexBacking {
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}
内部<代码>
不支持请求方法“POST”
当出现以下错误时,spring会抛出此错误:
- HTML表单操作有一些URL,其方法为
,您没有任何控制器方法来处理对该URL的POST请求POST
- POST处理程序方法中缺少或无效的
@ModelAttribute
public class IndexBacking {
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}
内部
谢谢,这是个好主意,它现在进入游戏控制器,但不保存名称字段(请参阅问题的更新)。你知道为什么会这样吗+1当您使用spring:bind时,为什么要再次使用路径名进行r u绑定,只需像下面一样使用一次spring bind就可以将错误映射到正确的字段。另一个路径绑定到支持对象,但我尝试删除其中一个路径,但仍然不起作用:/I我不能在其中包含对支持对象的引用。在哪里,jsp表单操作标记中的commandName或modelAttribute名称与控制器中使用@modelAttribute定义的名称相同?如果不一样,请保持不变,如果仍然不起作用..在controller中发布完整的jsp和save方法,将对其进行详细研究jsp表单使用commandName链接到控制器,但我将其更改为model name,没有运气。正如上面提到的@subhash,我可以很好地访问控制器,它似乎忽略了backing对象中的setter。我已经用完整的jsp表单更新了问题。谢谢,这是一个好主意,它现在进入游戏控制器,但不保存名称字段(请参阅问题的更新)。你知道为什么会这样吗+1当您使用spring:bind时,为什么要再次使用路径名进行r u绑定,只需像下面一样使用一次spring bind就可以将错误映射到正确的字段。另一个路径绑定到支持对象,但我尝试删除其中一个路径,但仍然不起作用:/I我不能在其中包含对支持对象的引用。在哪里,jsp表单操作标记中的commandName或modelAttribute名称与控制器中使用@modelAttribute定义的名称相同?如果不一样,请保持不变,如果仍然不起作用..在controller中发布完整的jsp和save方法,将对其进行详细研究jsp表单使用commandName链接到控制器,但我将其更改为model name,没有运气。正如上面提到的@subhash,我可以很好地访问控制器,它似乎忽略了backing对象中的setter。我已经用完整的jsp表单更新了这个问题。GameController.PAGE\u NAME
和handleBasicGet()中的PAGE\u NAME
的值相同吗?以及从哪个控制器GET方法呈现index.jsp
show?我的jsp表单要转到“index.htm”,这是indexController的页面名称,它是这样做的。GameController的页面名称是game.htm,但不会被称为unitlGameController.PAGE\u NAME
和handleBasicGet()中的PAGE\u NAME
重定向相同吗?以及从哪个控制器GET方法呈现index.jsp
show?我的jsp表单要转到“index.htm”,这是indexController的页面名称,它是这样做的。GameController的页面名为game.htm,但在IndexController中不会被称为unitl重定向。是的,因为我想在移动游戏控制器之前在当前控制器中做一些工作。它可以很好地使用POST方法,但似乎忽略了backing对象中的setter。页面加载时会调用getter,而不是setter。是的,因为我想在移动游戏控制器之前在当前控制器中做一些工作。它可以很好地使用POST方法,但似乎忽略了backing对象中的setter。页面加载时调用getter,而不是setter。太棒了!谢谢问题在于表单标题。我所做的只是删除enctype并接受字符集位,它成功了!其他一切都一样。不知道为什么会这样