2009-11-06 41 views
1

我試圖實現基於Spring documentation在我的Spring應用程序文件上傳。然而,當我SimpleUrlHandlerMapping建立參考,我甚至不能路由添加到我的登錄頁面。春天SimpleUrlHandlerMapping建立不允許路由任何HTML頁面

在我的web.xml,我已經映射的所有.htm文件到我的servlet:

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

然後,在MYAPP-servlet.xml中,我有這樣的:

<bean name="/login.htm" class="com.example.web.LoginFormController"> 
    <property name="sessionForm" value="true" /> 
    <property name="commandName" value="loginCommand" /> 
    <property name="commandClass" value="com.example.command.LoginCommand" /> 
    <property name="authenticationService" ref="authenticationService" /> 
    <property name="loginDataAccess" ref="loginDAO" /> 
    <property name="validator" ref="loginValidator" /> 
    <property name="formView" value="login" /> 
    <property name="successView" value="hello.htm" /> 
</bean> 

這使得我去登錄頁面並登錄。然而,當我添加以下基於文檔,我得到這個錯誤:沒有找到映射與HTTP請求的URI [/myapp/login.htm在DispatcherServlet的名爲「MYAPP」

這些都是線我添加到MyApp-servlet.xml文件:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <value>/upload.form=fileUploadController</value> 
    </property> 
</bean> 

<bean id="fileUploadController" class="com.example.web.FileUploadController"> 
    <property name="commandClass" value="com.example.domain.FileUploadBean" /> 
    <property name="formView" value="fileuploadform" /> 
    <property name="successView" value="hello.htm" /> 
</bean> 

如果我拿出urlMapping中節,我可以導航到上傳頁面,後來我得到一個IllegalStateException。如何讓Spring路線的htm文件時通常並讓我上傳的文件?當調用upload.form時,urlMapping不應該只是問題嗎?

更新

SKaffman's answer,我更新了MYAPP-servlet.xml中看起來像這樣:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <value> 
    /upload.form=fileUploadController 
    /upload.htm=fileUploadController 
    /login.htm=loginController 
    </value> 
    </property> 
</bean> 

這樣我就可以導航到上傳頁面,但是當我點擊提交按鈕,我得到一個404 upload.form說:「(/myapp/upload.form)不可用。」如果我走的Upload.htm出的映射,我無法導航到該頁面。我不知道用於頁面和上傳的映射。上傳頁面已經定義了這個動作:

<form method="post" action="upload.form" enctype="multipart/form-data"> 

回答

2

默認情況下,春季註冊自動多HandlerMapping豆類,包括BeanNameUrlHandlerMapping。這個處理器可以讓你用的東西像<bean name="/login.htm">無需任何額外的配置。

但是,只要添加一個顯式的處理程序映射Bean,就像您的SimpleUrlHandlerMapping一樣,那麼默認值就不再註冊,並且您的登錄控制器將不再被映射。

你最簡單的辦法可能是您的登錄控制器添加到SimpleUrlMappingHandler

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <value>/login.htm=loginController</value> 
    <value>/upload.form=fileUploadController</value> 
    </property> 
</bean> 

<bean id=loginController" class="com.example.web.LoginFormController"> 
    ... 
</bean> 
+0

感謝 - 這讓我瀏覽網頁,但我不能上傳文件。我用更多的細節更新了這個問題。有什麼建議麼? – 2009-11-06 16:15:47