2013-04-10 112 views
1

轉播SpringMVC 3 405 - Request method 'POST' not supportedSitemesh3 POST失敗

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過濾器之前,該提交其 '後' 的方法完全執行行動,

但一旦加sitemesh3過濾器,如果改變了HTML和行動都搞定了,還完美地工作,但如果我更改爲POST,被調用的行動,但返回「405 - 請求方法‘POST’不支持」

所以我認爲sitemesh3在對客戶端的操作響應時發生了改變。我回顧了sitemesh3的源代碼,但沒有發現任何有價值的東西。

任何人都可以提供幫助嗎?提前致謝。

回答

0

我不知道這是有關您的設置,但我有同樣的錯誤(不支持405-POST)

起初,我以爲是的sitemesh相關。然而,當我在我的案例中進一步研究它時,這是因爲我使用了<mvc:resources />來爲裝飾器提供靜態映射。

<mvc:resources />這是不接受的裝飾文件後請求作爲的sitemesh試圖用POST請求來訪問它。

我改變了我的修飾器文件的映射,以確保它是靜態的並響應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>