Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 spring mvc中@PathVariable的动态参数?_Java_Spring_Rest_Spring Mvc - Fatal编程技术网

Java spring mvc中@PathVariable的动态参数?

Java spring mvc中@PathVariable的动态参数?,java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,我正在寻找一种将多个路径参数用作一个字符串的方法 以下映射非常清楚:它将3个静态参数定义为路径变量: @RequestMapping(value = "/rest/{language}/{country}/{term}?someparams=test&...", method = RequestMethod.GET) 但是我想将/rest和{term}之间的任何内容写入一个@PathVariable` 示例:我可以调用localhost:8080/rest/this/is/my/dyn

我正在寻找一种将多个路径参数用作一个字符串的方法

以下映射非常清楚:它将3个静态参数定义为路径变量:

@RequestMapping(value = "/rest/{language}/{country}/{term}?someparams=test&...", method = RequestMethod.GET)
但是我想将
/rest
{term}
之间的任何内容写入一个@PathVariable`

示例:我可以调用
localhost:8080/rest/this/is/my/dynamic/customterm?someparams).

这里我想将
/this/is/my/dynamic
作为一个单路径变量

以下操作不起作用:

@RequestMapping(value = "/rest/{multiplePathParams}/{term}someparams=test&...", method = RequestMethod.GET)
public void test(@PathVariable String multiplePathParams, @PathVariableString term) {
       Assert.assertEquals(multiplePathParams, "/this/is/my/dynamic");
       Assert.assertEquals(term, "customterm");
}

有可能吗?

Spring url映射很好。但是这个问题你的url是坏的。您的控制器url是唯一的获取模式。点是@RequestParam

示例代码

@RequestMapping(value = "/rest/{multiplePathParams}/{term}", method = RequestMethod.GET)
    public void test(@PathVariable String multiplePathParams, @PathVariableString term, @RequestParam String someparams) {
           Assert.assertEquals(multiplePathParams, "/this/is/my/dynamic");
           Assert.assertEquals(term, "customterm");
    }

事实证明,无法在rest/get查询中检索子字符串

但是可以提取与通配符匹配的路径:

@GetMapping(value = "/rest/**",...
public Rsp test(HttpServletReq req) {
private String getSqlTemplateKey(HttpServletRequest req) {
    String pattern = (String) req.getAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE);
    String urlpart = PATH_MATCHER.extractPathWithinPattern(pattern, req.getServletPath());
}