2011-04-28 58 views
4

我希望有我的Spring MVC應用程序映射到以下擴展名是*的HTML jsp和* .action的控制器。Spring MVC的3.0映射擴展

這是爲登錄頁:

@RequestMapping(value="/login.html", method=RequestMethod.GET) 
public ModelAndView login(){ 
    ModelAndView mv = new ModelAndView("login/login"); 
    //omitted 
    return mv; 
} 

,這是採取行動:

@RequestMapping(value="/login.action", method=RequestMethod.POST) 
    public ModelAndView actionSignUp(@Valid User user){ 

    //omitted 
    return mv; 
    } 

和jsp很簡單:

<form:form method="POST" action="/login.action" commandName="user" > 
<form:input path="userName" id="userName" /><br /> 
<form:input path="password" id="password"/><br /> 
<input id ="login" type="submit" value="Login"></input> 
</form:form> 

我的web.xml如下:

<display-name>SpringMVC</display-name> 
    <servlet> 
    <servlet-name>springMVC</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>springMVC</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>springMVC</servlet-name> 
    <url-pattern>*.action</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

我沒有問題得到/login.html,但我有一個POST請求對/login.action

我越來越

HTTP狀態404個問題 - /login.action

爲什麼我的* .action映射不起作用?

我可以映射兩種不同的擴展名爲* html和* .action?

+0

@gouki可能是正確的在動作的URL可以是不正確的......但作爲一個旁白:你知道嗎,你可能只是映射'actionSignup'爲「/login.html」作爲POST。該方法是不同的,你不必有一個不同的網址。 – 2011-04-28 09:23:48

回答

1

在表單中的操作方法被定義爲action="/login.action"。 /使相對於您的域的網址。你應該注意到表單發佈到一個類似於http://localhost:8080/login.action的url,它應該是http:// localhost:8080/[context root]/[sub dir if defined] /login.action

我重新調整了刪除'/ '會解決它。

+1

更好的是,使用來正確附加上下文名稱。 – 2011-04-28 15:15:48