我正在尝试将我在Spring MVC 2.5中编写的应用程序转换为使用带注释的控制器样式。
显然,我无法把事情搞定。
我的映射如下:
<li><a href="eqr/eqrItemList.htm"><span>Equipment Qual Report</span></a></li>
我创建了我的控制器,如下所示:
@Controller
@RequestMapping("/eqr")
public class EQRMainController {
private SimpleEQRTransManager eqrManager;
protected final Log logger = LogFactory.getLog(getClass());
@RequestMapping(value = "/eqrItemList.htm")
public String setupForm(
@RequestParam(value = "plant", required = false) String plant,
return "eqrmain";
}
}
我想使用相对路径,因此我在类类型级别设置了请求映射。但显然,我在tomcat控制台上找不到404找不到Handler映射并且找不到错误。
它说:
找不到带URI的HTTP请求的映射[/myapp/eqr/eqrItemList.htm]
我查看Firebug控制台,它正在请求下面的路径:
http://localhost:8080/myapp/eqr/eqrItemList.htm
我不知道为什么找不到映射。
答案 0 :(得分:1)
您确定已为注释正确配置了上下文吗?
在MVC上下文配置中(通常称为dispatcher-servlet.xml
,取决于您的servlet的名称),您可以非常简单地使用此元素配置MVC注释支持:
<mvc:annotation-driven />
这是告诉Spring你将要使用MVC注释的最简单方法。这是我的一个项目的片段,将其置于上下文中:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Import my service beans -->
<import resource="application-context.xml" />
<mvc:annotation-driven />
<context:component-scan base-package="my.controllers.package.here" />
<!-- Other beans go here -->
<强>小心强>;这是春季3所以它可能不完全适用于2.5。检查参考文档(它非常彻底地解释了这一点)。
答案 1 :(得分:0)
检查web.xml中的servlet-mapping:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
如果 url-pattern 只修复了一些特殊的扩展名(例如 *。在此示例中执行),那么您的servlet将永远不会收到此请求。