Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Java 具有相同模式url的多个路由_Java_Spring - Fatal编程技术网

Java 具有相同模式url的多个路由

Java 具有相同模式url的多个路由,java,spring,Java,Spring,实际上,我正在创建一个简单的应用程序,我需要在多种情况下具有相同的路由模式: /* * Returns a list of all the root directories accepting query string on name */ @RequestMapping(value = "/directories", method = RequestMethod.GET) public List<DirectoryEntity> find() { return direct

实际上,我正在创建一个简单的应用程序,我需要在多种情况下具有相同的路由模式:

/*
* Returns a list of all the root directories accepting query string on name
*/
@RequestMapping(value = "/directories", method = RequestMethod.GET)
public List<DirectoryEntity> find() {
    return directoryService.findAll();
}


/*
* Returns a list of all the root directories accepting query string on name
* @param name Name of the ressources to search. Query string at format : *name*
*/
@RequestMapping(value = "/directories", method = RequestMethod.GET)
public List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
    return directoryService.findByName(name);
}
/*
*返回接受名称查询字符串的所有根目录的列表
*/
@RequestMapping(value=“/directories”,method=RequestMethod.GET)
公共列表查找(){
返回directoryService.findAll();
}
/*
*返回接受名称查询字符串的所有根目录的列表
*@param name要搜索的资源的名称。查询字符串的格式:*名称*
*/
@RequestMapping(value=“/directories”,method=RequestMethod.GET)
公共列表findByCriteria(@RequestParam(value=“name”,required=true)字符串名){
返回directoryService.findByName(名称);
}
事实上,我不想在与findAll one相同的函数中管理criteria请求。是否有办法处理这种情况而不必被迫在同一个功能中管理所有内容


感谢您的改进

尝试更改第二种方法@RequestMapping注释添加参数:

@RequestMapping(value = "/directories", method = RequestMethod.GET, params = "name")
public List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
    return directoryService.findByName(name);
}
@RequestMapping(value=“/directories”,method=RequestMethod.GET,params=“name”)
公共列表findByCriteria(@RequestParam(value=“name”,required=true)字符串名){
返回directoryService.findByName(名称);
}

有关更多详细信息,请参见。

我不太确定您在问什么,但假设要调用哪个方法的决定是基于请求参数的(必须是因为它们都是相同的URL和HTTP方法),那么类似的内容可能会有所帮助:

@RequestMapping(method=RequestMethod.GET, params={"name"})
public @ResponseBody List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
    //do your stuff
}
@RequestMapping(method=RequestMethod.GET,params={“name”})
public@ResponseBody List findByCriteria(@RequestParam(value=“name”,required=true)字符串名){
//做你的事
}
@RequestMapping
注释中包含
params
属性可以消除调用方法的不确定性


我还向返回类型中添加了
@ResponseBody
,以防您希望Spring在HTTP响应中返回列表。

为每个方法添加
@ResponseBody
的替代方法是在类上使用
@RestController
注释,它将自动为每个方法提供
@ResponseBody