Java 不支持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

我试图使用POST将表单连接到另一个页面,但我不断收到错误:

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,其方法为
    POST
    ,您没有任何控制器方法来处理对该URL的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,其方法为
    POST
    ,您没有任何控制器方法来处理对该URL的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,但不会被称为unitl
GameController.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并接受字符集位,它成功了!其他一切都一样。不知道为什么会这样