я хотел бы перенаправить запрос примерно так
localhost: 8080/firstSpringProject/{uniqueusername}
к определенному контроллеру с именем "профиль":
@RequestMapping(value="/profile")
public String profiles(Model model){
based on the uniqueusername i would like to render a profile page
return "profile";
}
Я использую весенний mvc; как я могу решить эту ситуацию, есть ли другой способ сделать это?
Я думаю, вы можете использовать переменную весеннего пути здесь. Вам необходимо создать метод контроллера, который будет принимать имя пользователя в соответствии с вашим требованием к URL-адресу и перенаправится на метод профиля с параметром имени пользователя.
@RequestMapping(value="/{username}")
public String getUserName(Model model,@PathVariable("username") String username){
//process username here and then redirect to ur profile method
return "redirect : profile?username="+username;
}
@RequestMapping(value="/profile")
public String profiles(Model model,String username){
//have a username and render a profile page
return "profile";
}
спасибо
Весенняя документация говорит о переадресации:
Обратите внимание, что переменные шаблона URI из настоящего запроса автоматически становятся доступными при расширении URL-адреса переадресации и не нужно явно добавлять ни через модель, ни в RedirectAttributes. Например:
@RequestMapping(value = "/files/{path}", method = RequestMethod.POST)
public String upload(...) {
// ...
return "redirect:files/{path}";
}
Имейте в виду, что на версию ниже 3.1.4 влияет утечка памяти из-за кэширования переадресации.
Если вы используете Spring 3.1.3 или ниже, и вы делаете это
return "redirect : profile?username="+username;
вы когда-нибудь увидите OutOfMemoryError.
@RequestMapping("/{uniqueUserName}")
?