2009-05-12 87 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

你应该看看您的视图解析器。确保它按照您认为应该解决的控制器中的逻辑名称。看起来它是解决它不存在名称目前