Sitemesh3 POST失败

时间:2013-04-10 07:54:32

标签: spring sitemesh

重新发布SpringMVC 3 405 - Request method 'POST' not supported

HTML

<form action="testPost" method="post"> 
    <input type="submit" value="Submit" />
</form>

动作(用SpringMVC)

@RequestMapping(value="testPost", method = RequestMethod.POST)
    public String testPost(){
      return "shared/post";
}

在添加sitemesh3过滤器之前,这个'post'方法执行的提交操作完美,

但是一旦添加了sitemesh3过滤器,如果将HTML和操作都更改为GET,仍然可以正常工作,但是如果我更改为POST,则会调用该操作,但返回'405 - 请求方法'POST'不支持'

所以我认为sitemesh3在对客户端的动作响应时改变了一些东西。我查看了sitemesh3的源代码,但没有找到任何有价值的东西。

任何人都可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是否与您的设置相关,但我遇到了同样的错误(405-post不支持)

最初我认为这与sitemesh有关。但是,当我在我的案例中更多地研究它时,那是因为我使用的是<mvc:resources /&gt;提供到装饰器的静态映射。

由于sitemesh试图使用Post请求访问它,因此<mvc:resources />不接受装饰器文件的发布请求。

我更改了装饰器文件的映射,以确保它是静态的并响应POST和GET请求。更多细节Spring: not accept POST request under mvc:resources? how to fix that

我使用的代码是

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 <property name="urlMap">
     <map>
          <entry key="/DecTest/**" value="myResourceHandler" />
     </map>
 </property>
 <property name="order" value="100000" />       
</bean>

<bean id="myResourceHandler" name="myResourceHandler"
      class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler">
      <property name="locations" value="/DecTest/" />
      <property name="supportedMethods">
         <list>
            <value>GET</value>
            <value>HEAD</value>
            <value>POST</value>
         </list>
     </property>
     <!-- cacheSeconds: maybe you should set it to zero because of the posts-->
</bean>