我正在寻找一种将多个路径参数用作一个字符串的方法。
以下映射非常清楚:它将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");
}
有可能吗?
答案 0 :(得分:0)
Spring url mapping很好。但这个问题你的网址很糟糕。你的控制器网址只是获取模式。点是@RequestParam。
示例代码
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
<scope>runtime</scope>
</dependency>
答案 1 :(得分:0)
事实证明无法在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());
}