2009-05-12 90 views
1

大概在這裏丟失了一些完全明顯的東西,但是在這裏。我從Spring MVC開始。我有一個表單控制器來處理到/share/edit.html的入站請求。當我打這個網址從我的瀏覽器,我得到以下錯誤:Spring MVC - 表單映射

The requested resource (/inbox/share/share/edit) is not available. 

,這裏是我的applicationContext-mvc.xml:

<bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" > 
     <property name="mappings" > 
      <value> 
       /share/edit.html=shareFormController 
       /share/list.html=shareController 
       /share/view.html=shareController 
       /folders.json=foldersController 
       /studies.json=studiesController 
      </value> 
     </property> 
    </bean> 


<bean id="internalPathMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" /> 

<bean id="shareFormController" class="com.lifeimage.lila.controller.ShareFormController" /> 
<bean id="shareController" class="com.lifeimage.lila.controller.ShareController" > 
    <property name="methodNameResolver" ref="internalPathMethodNameResolver" /> 
</bean> 

和我的表單控制器:

public class ShareFormController extends SimpleFormController { 

    public ShareFormController() { 
     setCommandClass(Share.class); 
    } 

    @Override 
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) 
      throws Exception { 

     //controller impl... 

    } 



} 
+0

有趣的是,將URL映射從/share/edit.html更改爲/edit.html可以使映射工作。但這沒有道理;我在這裏無法使用任何其他形式。 – 2009-05-12 16:35:15

回答

1

我想我已經解決了這個問題。有兩個問題:SimpleFormController的

1)實現需要的格式,併成功視圖;我沒有在這裏配置。由於這是一個AJAX客戶服務器方法,我添加了一個彈簧JSON視圖如下:

<?xml version="1.0" encoding="UTF-8"?> 

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd」 默認延遲實例=「假」默認自動裝配=「否」 默認依賴性檢查=「無」>

<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"> 
     <property name="jsonErrors"> 
      <list> 
        <ref bean="statusError" /> 
        <ref bean="modelflagError" /> 
      </list> 
    </property> 
</bean> 

<bean name="statusError" 
     class="org.springframework.web.servlet.view.json.error.HttpStatusError"> 
     <property name="errorCode"><value>311</value></property> 
</bean> 
<bean name="modelflagError" 
     class="org.springframework.web.servlet.view.json.error.ModelFlagError"> 
     <property name="name"><value>failure</value></property> 
     <property name="value"><value>true</value></property> 
</bean> 
可以用來對返回JSON所有控制器

2)我從SimpleURLHandlerMapping切換到ControllerClassNameHandlerMapping,並依靠Spring命名約定(controllerClassName/method.html)修復了路由問題。可能不是一個長期的解決方案,但讓我完成任務。

0

你有沒有檢查你的日誌輸出? Spring MVC在輸出中通常非常冗長。

此外,您發佈的網址(/inbox/share/share/edit)似乎與您正在配置的網址(/share/edit.html)不匹配。

+0

我認爲這是問題所在。 /inbox/share/edit.html是我試圖讓控制器收聽的URL。爲什麼路徑名會重複? – 2009-05-12 16:24:00

+0

不確定。解決視圖問題可能是從URL映射到問題控制器的問題。真的,檢查日誌。 – 2009-05-12 17:01:05

1

你應該看看您的視圖解析器。確保它按照您認爲應該解決的控制器中的邏輯名稱。看起來它是解決它不存在名稱目前