Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring-基于标志选择控制器_Spring_Controllers - Fatal编程技术网

Spring-基于标志选择控制器

Spring-基于标志选择控制器,spring,controllers,Spring,Controllers,问题定义 我有一个链接指向myapp/doStuff 目前我有一个Spring控制器来处理这个请求。。说多斯塔福德 但是现在有了一个新项目,我需要做以下工作 1.添加日期相关标志-dateFlag(如果日期

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

目前我有一个Spring控制器来处理这个请求。。说多斯塔福德

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

在春天实现这一目标的最佳方式是什么。 注意:URL动态来自应用程序外部,无法更改。

您可以这样做

myapp/doStuff
处理程序中,您可以检查标志并将请求转发到新url(
doStuffOld
),您可以使用该选项

如果使用了另一个解决方案if,您可以不希望调用旧的处理程序
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){
    ....
}
你能行

myapp/doStuff
处理程序中,您可以检查标志并将请求转发到新url(
doStuffOld
),您可以使用该选项

如果使用了另一个解决方案if,您可以不希望调用旧的处理程序
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){
    ....
}

我同意我可以这样做,但是客户端有一个严格的要求,只有正确的控制器应该被调用。所以基本上没有从一个控制器重定向到另一个控制器。我正在努力弄清楚这个计划的可行性this@user1812652是否要求必须调用旧的处理程序
doOldStuff
,并且使用的是spring版本?您是否使用
RequestMapping
注释来映射请求句柄?根据标志,需要为同一url调用两个处理程序中的一个。我在描述中使用新旧术语只是为了区分。这两个控制器具有不同的逻辑。此外,还使用了Spring 3+,因此我可以使用请求映射注释Thank。。这更有意义。现在,由于url是动态呈现的(应用程序不创建此url),并且dateFlag确定位于Util.java文件中。您建议我如何将其集成到params逻辑中?我同意我可以这样做,但是客户端有一个严格的要求,即只应调用正确的控制器。所以基本上没有从一个控制器重定向到另一个控制器。我正在努力弄清楚这个计划的可行性this@user1812652是否要求必须调用旧的处理程序
doOldStuff
,并且使用的是spring版本?您是否使用
RequestMapping
注释来映射请求句柄?根据标志,需要为同一url调用两个处理程序中的一个。我在描述中使用新旧术语只是为了区分。这两个控制器具有不同的逻辑。此外,还使用了Spring 3+,因此我可以使用请求映射注释Thank。。这更有意义。现在,由于url是动态呈现的(应用程序不创建此url),并且dateFlag确定位于Util.java文件中。您建议我如何将其集成到params逻辑中?