2012-11-28 25 views
1

我有問題,哪個解決方案可能很明顯。春天。將post方法請求綁定到基址url,而沒有後斜線

我想將post和get方法綁定到應用程序基礎url。我使用的註解控制器巫婆的方法的一個樣子:

@RequestMapping(value = { "/*" }, method = { RequestMethod.GET, RequestMethod.POST }) 
public void init(HttpServletRequest request) { 
    logger.info("Method: " + request.getMethod()); 
} 

而在這兩種情況下,當我發送GET或POST請求我總是得到結果「的方法:GET」。我怎麼解決這個問題?

這似乎是在應用程序的某個地方有重定向,但找不到任何。

在此先感謝!

+0

這可能有助於知道你是如何發佈到URL。如果將它分解爲兩個單獨的RequestMappings,一個用於POST,另一個用於GET,會發生什麼?它能正常工作嗎? – ach

+0

你如何測試這個? –

回答

0

的問題是你如何測試你的程序,你只使用GET方法,通過以測試POST 在瀏覽器窗口中輸入網址,你可以像

<form action="http://localhost:8080/yourapp/yourEntryPoint" method="post"> 
    <input type="text" name="data" value="mydata" /> 
    <input type="submit" /> 
</form> 

,並創建內容簡單的HTML頁面在瀏覽器中打開

或使用插件來選擇的(谷歌)「REST服務的測試」

更多的瀏覽器關於Spring MVC http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/#mvc-ann-requestmapping

,以便將其映射到基本網址爲控制器,你不需要把值=上的方法

@Controller 
    @RequestMapping("/yourEntryPoint") 
    public class YourClass { 

     @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST }) 
     public void get() { 
      logger.info("Method: " + request.getMethod()); 
     } 

     @RequestMapping(value="/new", method = RequestMethod.GET) 
     public void getNewForm() { 
     logger.info("NewForm"); 
    } 

    } 

這將映射包括請求POST和GET的URL

http://host:port/yourapp/yourEntryPoint 

,這將映射到GET

http://host:port/yourapp/yourEntryPoint/new 
+0

我使用POSTMAN(Chrome插件)創建GET和POST請求。也用捲曲測試它。並獲得重定向的答案,但據我所知,這個重定向來自容器(TOMCAT)。它正在工作,當我使用類似yourEntryPoint的東西,但它是基本的應用程序url http:// host:port/yourapp的問題。 POST到http:// host:port/yourapp不起作用,但是POST http:// host:port/yourapp //工作得很好。但我想省略最後的斜線。 – Damian0o