Сервер ищет jsp в неправильном каталоге Spring MVC + Tomcat - PullRequest
0 голосов
/ 26 июня 2018

В моем приложении Spring MVC у меня есть следующий ViewResolver:

 @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/view/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

У меня есть контроллер с двумя методами:

@Controller
@RequestMapping("/test")
public class CheckPageController {

    @RequestMapping(method = RequestMethod.GET)
    public String test() {
        return "myview";
    }

    @RequestMapping(method = RequestMethod.GET, value = "/testagain")
        public String anotherTest() {
        return "myview";
    }
}

Мои файлы .jsp находятся в WEB-INF/view каталоге
Когда я захожу на /test, сервер прекрасно открывается myview.jsp
Когда я перехожу на /test/testagain, сервер показывает следующее:

Message /test/WEB-INF/view/myview.jsp
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Почему он ищет myview.jsp на этом пути? Почему путь начинается с /test?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Просто измените resolver.setPrefix("WEB-INF/view/"); на resolver.setPrefix("/WEB-INF/view/");

Потому что, если вы не добавляете косую черту раньше, она будет искать в том же каталоге приложения и, очевидно, не найдет ресурс. так что не получится.

0 голосов
/ 26 июня 2018

Должно быть

resolver.setPrefix("/WEB-INF/view/");

Почему?

UrlBasedViewResolver, который является родителем InternalResourceViewResolver, устанавливает url представления с помощью этого:

AbstractUrlBasedView view = (AbstractUrlBasedView) BeanUtils.instantiateClass(getViewClass());    
view.setUrl(getPrefix() + viewName + getSuffix());

Это url, куда DispatcherServlet будет пересылать.

Поскольку у вас нет ведущего /, ваш прямой URL-адрес относительно текущего URL-адреса и /test/WEB-INF/view/myview.jsp не существует.

Рекомендуемое чтение: Какова цель использования косой черты в HTML-URL

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