根据查询参数将相同的URL映射到spring中的不同控制器

时间:2011-06-23 03:06:04

标签: spring url mapping

我正在使用基于spring注释的控制器。我希望我的URL /用户/消息映射到某个控制器a,如果查询参数标签存在,否则存在于某个不同的控制器b。这是必需的,因为当存在参数标记时,可以存在一些更多参数以及我想在不同控制器中处理的参数以保持实现清洁。在春天有任何方法可以做到这一点。这个问题还有其他优雅的解决方案吗?

2 个答案:

答案 0 :(得分:6)

您可以使用params注释的@RequestMapping属性根据Http参数选择控制器方法。

见这个例子:

@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
    ...
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView list() {
    ...
}

它是一种REST风格,如Spring ROO使用:如果请求包含参数forms,则使用createForm处理程序,否则使用list方法。

答案 1 :(得分:3)

如果你想去Spring路线,你可以检查提到的here HandlerInterceptor。拦截器可以查看您的查询参数,并将链接重定向到其他可以被另一个SimpleUrlMapper捕获的内容。

另一种方法是将其发送到单个控制器,如果查询参数为“b”,则让控制器转发到另一个操作。