Spring - 根据标志选择控制器

时间:2013-04-10 03:13:13

标签: spring controllers

问题定义 我有一个链接指向myapp / doStuff

目前我有一个Spring控制器来处理这个请求..比如doStuffOld

但是现在有了一个新项目,我需要做以下几点 1.添加日期相关标志 - dateFlag(如果日期< 10-Sep,则为false) 2.创建一个新的控制器doStuffNew 3.对于相同的url(myapp / doStuff),如果dateFlag为false,我需要使用doStuffOld,否则使用doStuffNew

春天实现这一目标的最佳途径是什么? 注意:URL是从应用程序外部动态生成的,不能更改。

1 个答案:

答案 0 :(得分:1)

您可以执行request forwarding

boolean dateFlag = Boolean.getBoolean(request.getParameter("dateFlag")); //Get the dateFlag value in the `doStuff` handler method

if(dateFlag){
    request.getRequestDispatcher("doStuffOld").forward(request, response);
    return null;
}

myapp/doStuff处理程序中,您可以检查标记并将请求转发到新网址(doStuffOld),您可以使用params选项。

使用RequestMapping并且您不希望调用旧处理程序的另一种解决方案doOldStuff

@RequestMapping(value="doStuff", params="dateFlag=true")
public ModelAndView doStuff(HttpServletRequest request, HttpServletResponse response){
    ....
}

@RequestMapping(value="doStuff", params="dateFlag=false")
public ModelAndView doOldStuff(HttpServletRequest request, HttpServletResponse response){
    ....
}