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

r15*_*abh 5 mapping url spring

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

Ral*_*lph 6

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

看这个例子:

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

@RequestMapping(method = RequestMethod.GET)
public ModelAndView list() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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


raj*_*aur 3

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

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