【发布时间】:2014-09-15 11:56:18
【问题描述】:
我正在尝试向我们的 Spring MVC 应用程序添加国际化和本地化支持。
在我的 dispatcherservlet.xml 中,我使用 DefaultAnnotationHandlerMapping 进行映射
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
在我的 web.xml 中
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/dispatcherservlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
我的控制器
@Controller
@RequestMapping(value = "/account")
public class AccountController {
@RequestMapping(method = RequestMethod.GET)
public String index() {
return "index";
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showForm(Map<String, Object> mm) {
mm.put("subcriber", new Sucriber());
return "register";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@ModelAttribute("subcriber") Sucriber sucriber,BindingResult result,Map<String, Object> mm) {
SucriberValidator sucriberValidator = new SucriberValidator();
sucriberValidator.validate(sucriber, result);
if (result.hasErrors()) {
return "register";
} else {
return "success";
}
}
}
当我去 myhost/myhost:myport/myproject 时,一切正常
但 DefaultAnnotationHandlerMapping 类已弃用。
在 Spring 3.2 中支持 RequestMappingHandlerMapping。所以我使用类RequestMappingHandlerMapping。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
当我转到 myhost/myhost:myport/myproject 时,出现错误
HTTP 状态 500 - 处理程序 [public java.lang.String controller.AccountController.index()] 没有适配器:DispatcherServlet 配置需要包含支持此处理程序的 HandlerAdapter
感谢您的帮助
【问题讨论】:
-
当我用 RequestMappingHandlerMapping 替换 DefaultAnnotationHandlerMapping 时出现问题。我不知道为什么。我将 @RequestMapping(value = "/",method = RequestMethod.GET) 添加到索引方法,但结果仍然是 HTTP 状态 404
-
如果您使用
RequestMappingHandlerMapping,还需要添加RequestMappingHandlerAdapter。但是使用<mvc:annotation-driven />然后<mvc:interceptors />注册拦截器更容易。
标签: java spring spring-mvc