Парсинг переменных пути из URL - PullRequest
0 голосов
/ 17 февраля 2012

Я должен реализовать почти аналогичную систему для Spring PathVariable . Я знаю, как разобрать мое собственное определение URL:

Определение:

blog-{String}-{Integer}

Код:

Pattern p = Pattern.compile("\\{.+?\\}");
Matcher m = p.matcher(pathFormat);
while(m.find())
{
    String group = m.group();
    // ...
}

Но как я могу разобрать реальные URL с моим форматом? Если реальный URL был как

blog-my-first-blogging-10001

Реальный URL не имеет скобок, так как я могу использовать регулярные выражения для сопоставления моей группы. Тип группы известен, но как сопоставить без скобок?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Может быть немного глупо, но почему бы не попробовать:

 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.

??

Если ваши пути не могут быть более сложными, чем blog-{String}-{Integer}, здесь нет необходимости в регулярных выражениях.

1 голос
/ 17 февраля 2012

Непонятно (по крайней мере, мне), что вы пытаетесь сделать, вот как я использую переменные пути пружины:

@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 может быть желаемой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...