2011-06-06 104 views
1

我試圖創建一個簡單的測試網站使用彈簧MVC,我似乎無法通過最簡單的情況。我有一個jsp網站,這是一個「登錄」,有2個輸入和一個提交按鈕,但它不會顯示任何內容,除了一個錯誤消息。獨立使用Spring 3.0.2和Tomcat 6.0.29。Spring MVC IllegalStateException錯誤

IndexController.java:

@Controller 
@RequestMapping("login.htm*") 
public class IndexController { 
    @RequestMapping(method=RequestMethod.GET) 
    public String getLoginPage(Map model){ 
    UserAccess user = new UserAccess(); 
    model.put("user", user);  

    return "login"; 
} 

的login.jsp:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    </head> 
    <body> 
    <form:form action="login.htm" commandName="user"> 
    <table> 
     <tr> 
      <td>Enter Username:</td> 
     <td><form:input path="username" /></td> 
     </tr> 
     <tr> 
      <td>Enter Password:</td> 
     <td><form:password path="password" /></td> 
     </tr> 
     <tr> 
      <td><input type="submit" value="Submit"></td> 
     </tr> 
    </table> 
    </form:form> 
    </body> 
</html> 

我UserAccess類是僅此而已,然後輸入用戶名,密碼和一堆的getter/setter方法的,就像任何豆應是。附上一張關於構建錯誤的圖片,請讓我知道是否需要更多信息來幫助我。 Error Picture

我servlet.xml中

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

以及我的項目的web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>login.jsp</welcome-file> 
</welcome-file-list> 

回答

1

我不敢相信我是如此愚蠢。我想出了我自己的問題。這就是爲什麼我討厭註釋......在我的servlet.xml文件中,我有組件掃描掃描錯誤的軟件包,所以我的註釋都沒有被拾取。重構是一種痛苦,呃?

TL; DR:確保你在列出你的servlet.xml中正確的包

1

你的命令名稱不user,這是userAccess。錯誤告訴你它無法在你的標籤中找到用戶的命令名稱。

編輯:好的,考慮使用@ModelAttribute註釋將模型屬性分解爲它自己的方法。

@ModelAttribute("user") 
public UserAccess formBackingObject() { 
    return new UserAccess(); 
} 

話雖如此,你已經完成了應該工作。或者,嘗試返回模型和視圖。

return new ModelAndView("login", model); 

也許它沒有拿起簽名中的模型地圖......但我認爲這將工作。

+0

對不起,我應該有雙重檢查,我已經編輯了後,我一直在嘗試各種得到它的工作,改變了即使在更改之後,它仍然不起作用 – Nicholas 2011-06-06 03:52:05

+0

請參閱上面的編輯。 – 2011-06-06 03:58:58

+0

我做了以上,仍然得到相同的錯誤。這很令人沮喪,因爲我找不到確切的問題。我已經下載了另一個這樣的例子,並逐字匹配,但它仍然不起作用。 – Nicholas 2011-06-06 04:03:03

1

我想你直接請求login.jsp而不是通過Spring控制器。這就是爲什麼在JSP文件呈現時沒有用戶連接到您的請求,因爲請求根本沒有涉及DispatcherServlet

那是因爲你welcome-file-listlogin.jsp,我以爲login.jsp不在WEB-INF/{something}下,但它是在Web應用程序的根目錄,因此可以直接訪問。

要檢查我的假設是否正確,請嘗試請求:http://localhost:8080/login.htm而不是簡單地http://localhost:8080

+0

我有要求login.htm,但即使我直接要求它自己,它仍然無法正常工作 – Nicholas 2011-06-06 12:45:34