Довольно странная ошибка, на самом деле:
1 |
PageNotFound - No mapping for GET /virtualpets-server/WEB-INF/views/home.jspx |
Сами контроллеры отрабатывают, не отрабатывает именно viewResolver, объявленный в XML-конфигурации (проект старый, был создан ещё в эпоху XML-конфигураций для Spring, без Spring Boot):
1 2 3 4 5 |
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <beans:property name="prefix" value="/WEB-INF/views/"/> <beans:property name="suffix" value=".jspx"/> </beans:bean> |
Конкретно в моём случае оказалось, что в “web.xml” нужно было url-pattern сменить с /* на просто /, без звёздочки.
Было:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> ... |
Стало (обратите внимание, теперь url-pattern без *:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ... |
После этого всё заработало. Довольно странно, на мой взгляд, потому что символы * там вполне должны быть допустимы, да и контроллеры Spring отрабатывали нормально.
С магическими артефактами часто так — не понятно ты приказываешь артефакту или артефакт приказывает тебе