我必须实现与Spring PathVariable几乎相似的系统。我知道如何解析我自己的网址定义:
定义:
blog-{String}-{Integer}
代码:
Pattern p = Pattern.compile("\\{.+?\\}");
Matcher m = p.matcher(pathFormat);
while(m.find())
{
String group = m.group();
// ...
}
但是如何用我的格式解析真实的网址呢?如果真正的网址是
blog-my-first-blogging-10001
真实网址没有括号,因此如何使用正则表达式匹配我的群组。组的类型是已知的,但如何匹配没有括号?
答案 0 :(得分:1)
目前还不清楚(至少对我来说)你要做的是什么,以下是我如何使用spring path变量:
@RequestMapping(value = "/{MyBlog}/{myVar}", method = RequestMethod.GET)
public ModelAndView getBlog(@PathVariable final String MyBlog, @PathVariable final Integer myVar) {
final ModelAndView mav = new ModelAndView(MyBlog);
mav.addObject("myVar", myVar);
// in actuality do lots of other thigns
return mav;
}
使用url http://myApp.com/AnyBlogName/21
访问它,其中21可以是任意数字,AnyblogName可以是你想要的字符串。
答案 1 :(得分:1)
也许有点傻,但为什么不尝试:
String restOfPath = pathFormat.substring(5); //eliminate 'blog-' prefix
int lastDash = restOfPath.lastIndexOf('-'); //find the last '-'
String title = restOfPath.substring(0, lastDash); // take what's before '-'
String id = restOfPath.substring(lastDash + 1); // take the rest.
...
除非您的路径比[{1}}更复杂,否则此处不需要正则表达式。