Jestem pewien, że to jest pytanie typu noob, a ja spędziłem większą część godziny na trałowaniu stackoverflow, ale nikt nie wydaje się mieć mojego przypadku, więc tutaj idź ...Mieszanie REST i JSP w Spring MVC, nie mogę znaleźć JSP
Mam nową aplikację internetową, która używa Spring MVC. Większość aplikacji (99%) jest czystym REST, więc raczej nie wysyła "widoku" jako takiego, ale po prostu wysyła JSON z powrotem na przewód lub wysyła alternatywny status HTTP w przypadku błędów itp.
Wyjątek to strona logowania, która musi być rzeczywistą stroną JSP, ale w jakiś sposób konfiguracja, której używam do mapowania kontrolerów REST, pozostawia mnie w stanie, w którym normalne mapowanie JSP nie działa.
Oto co mam:
W moim dyspozytora serwletu konfiguracji, odpowiednie porcje są:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
W moich prób, aby to działa, mam również dodać mapowanie do " HomeController”, które obecnie tylko przekierowuje do mojego logowania JSP:
<bean name="/" class="com.somepackage.HomeController"/>
teraz w web.xml mam:
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-dispatcher-servlet.xml
</param-value>
</context-param>
Działa to dobrze dla moich relaksującego kontrolerów, które wyglądają tak:
@Controller
@RequestMapping(value = "/api/user")
public class BlahBlahController {...
My "HomeController", które po prostu wygląda tak:
@Controller
@RequestMapping(value = "/")
public class HomeController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
return new ModelAndView("login");
}
}
jest wyzwalane kiedy hit "/"url, ale pojawia się ten błąd w dziennikach:
WARNING: No mapping found for HTTP request with URI [/WEB-INF/pages/login.jsp] in DispatcherServlet with name 'spring-dispatcher'
Teraz mam to, co mówi, nie wie, jak rozwiązać /WEB-INF/pages/login.jsp
(strona ta istnieje btw), ale utknąłem, jak muszę zmienić rzeczy, aby to działało.
Jestem trochę zdezorientowany, jak to powinno działać. Czy ktoś ma jakieś wskazówki?
Dzięki.
Nie jestem pewien, czy to ważne, ale dlaczego pan zdefiniował widok resolverowi dwukrotnie chciał? Również twój "HomeController" jest opatrzony adnotacją '@ Component' zamiast' @ Controller'. – NilsH
Oh .. lol .. yeah duplikat jest błędem .. nie powinno mieć znaczenia, jak powiedziałeś. Rozróżnienie @ Component/@ Controller jest dobrze zauważone, zmienię się teraz i spróbuję ponownie. (Wpis edytowany w celu usunięcia tych błędów jako problem nadal występuje) –
Tak więc bez pojawia się następujący błąd: Nie znaleziono mapowania dla HTTP żądanie z identyfikatorem URI [/] w ... Po mapowaniu otrzymuję taki sam błąd jak poprzednio: Nie znaleziono mapowania dla żądania HTTP z identyfikatorem URI [/WEB-INF/pages/login.jsp] w ... Nienawidzę mieć tego xml config tam .. Wolałbym, żeby wszystko było związane z adnotacją, ale mimo to nadal nie działa dla mnie –