Установите базовый URL на странице при использовании Spring MVC 3 - PullRequest
1 голос
/ 19 октября 2011

Сейчас я изучаю 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?

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Если я правильно понимаю проблему, это то, что вы ищете <base href="<c:url value="${webappRoot}" />

0 голосов
/ 19 октября 2011

Могу ли я не правильно понять проблему, но если вы хотите, чтобы базовый URL-адрес в jsp был для некоторых ссылок, тогда ваш подход неправильный.

обычно вы делаете что-то подобное:

test

А для перенаправлений в контроллере вы можете указать, как должен интерпретироваться URL, если вы используете RedirectView вместо возврата перенаправления String:xxx ": конструктор представления перенаправления RedirectView(String url, boolean contextRelative) может использоваться для указания контекста относительно текущего ServletContext или относительно веб-сервера.

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