2

可能在这里遗漏了一些完全明显的东西,但是这里有。我从 Spring MVC 开始。我有一个表单控制器来处理对 /share/edit.html 的入站请求。当我从浏览器点击此 url 时,我收到以下错误:

 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...

    }



}
4

4 回答 4

1

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

于 2009-05-12T16:14:25.760 回答
1

我想我已经解决了这个问题。有两个问题:

1) SimpleFormController 的实现需要表单和成功视图;我没有在这里配置。由于这是 AJAX 客户端的服务器方法,我添加了一个 Spring-JSON 视图,如下所示:

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

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" default-lazy-init="false" default-autowire="no" default-dependency-check="none">

<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),从而解决了路由问题。可能不是一个长期的解决方案,但让我完成了任务。

于 2009-05-15T13:16:18.727 回答
0

你检查你的日志输出了吗?Spring MVC 的输出通常非常冗长。

此外,您发布的 URL ( /inbox/share/share/edit) 似乎与您正在配置的 URL ( ) 不匹配/share/edit.html

于 2009-05-12T16:09:28.200 回答
-1

@jordan002 当我看到你必须跳起来完成任务时,我觉得有义务分享一个非常强大的 Java MVC 框架,它需要更少的配置。该框架称为 Induction,查看文章 Induction vs. Spring MVC,http://www.inductionframework.org/induction-vs-spring-mvc.html

于 2009-08-03T17:26:44.163 回答