Сейчас я изучаю Spring MVC 3.
Я сталкиваюсь с некоторыми проблемами при установке URL-адресов на моей странице, поскольку URL-адреса на странице относятся к текущей странице, поэтому я хочу установить базуURL на каждой странице.
Когда я использую Structs 2, я создаю действие BaseAction следующим образом:
public class BaseAction{
public BaseAction(){
string baseURL=getServletContext.getHost()+"...."+.....;
}
public getBaseURL(){xxxxx}
}
Затем на странице:
<base href='<s:prototype value="baseURL"/>' />
Теперь вSpring MVC 3, поскольку новый экземпляр связанного контроллера не создается для каждого запроса, поэтому я не знаю, как это сделать?
Наконец, я думаю, что могу использовать перехватчик, поэтому я создаю перехватчик:
public class BaseURLInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {
return true;
}
//after the handler is executed
public void postHandle(
HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView)
throws Exception {
modelAndView.getModel().setObject("baseURL",requset.getHost()+"......");
}
}
На странице:
Я могу использовать:
<base href="${baseURL}" />
Это работает, однако, когда представление перенаправлено,это добавит это значение к URL.
Например:
@Controller
@RequsetMapping("/user")
public class UserController{
@RequsetMapping("edit/{userid}")
public String edit(@PathVariable String uid)
//edit logic
return "redirect:list"
}
@RequsetMapping("list")
public String list(){
//get users list
return "user_list"
}
}
Когда я сделаю кнопку отправки на странице редактирования пользователя, я перенаправлю на:
http://localhost:8080/app/user/list?baseURL=http://localhost:8080
Где параметр в URL ?baseURL=http://localhost:8080
не тот, который я хочу.
Как это исправить?
Или как лучше решить URL-путь с помощью Spring MVC 3?