可能遗漏了一些在这里完全明显的东西,但是这里有。我开始使用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>
和我的表单Controller:
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 :(得分:1)
您应该查看视图解析器。确保它正如您认为的那样解析控制器中的逻辑名称。看起来它正在解析的名称目前不存在
答案 1 :(得分: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” 默认依赖性检查= “无” &GT;
<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),它修复了路由问题。可能不是一个长期的解决方案,但让我完成了任务。
答案 2 :(得分:0)
您检查了日志输出吗? Spring MVC在输出内容方面通常非常冗长。
此外,您发布的网址(/inbox/share/share/edit
)似乎与您配置的网址(/share/edit.html
)不匹配。
答案 3 :(得分:-1)
@ jordan002当我看到你必须跳到完成任务的所有箍时,我觉得有必要分享一个非常强大的Java MVC框架,它需要更少的配置。该框架称为Induction,请参阅文章Induction vs. Spring MVC,http://www.inductionframework.org/induction-vs-spring-mvc.html