Java spring mvc中@PathVariable的动态参数?
我正在寻找一种将多个路径参数用作一个字符串的方法 以下映射非常清楚:它将3个静态参数定义为路径变量: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
@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());
}