2016-06-03 4 views
0

Я пробовал посмотреть несколько похожих вопросов на StackOverflow, но не мог понять! Это мое первое приложение Spring, поэтому я сожалею о возможном дублирующем вопросе. Любая помощь могла бы быть полезна.javax.servlet.ServletException: Не удалось разрешить просмотр с именем 'отели/бронирование/enterBookingDetails' в сервлет с именем 'travel'

Я получаю следующее сообщение об ошибке, когда я перейти на страницу enterDetails: -

Exception thrown by application class 'org.springframework.web.servlet.DispatcherServlet.render:1029' 
javax.servlet.ServletException: Could not resolve view with name 'hotels/booking/enterBookingDetails' in servlet with name 'travel' 
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1029) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290) 
at [internal classes] 
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207) 
at [internal classes] 

Вот контроллер: -

@RequestMapping(value = "hotels/booking", method = RequestMethod.GET) 
public String bookingDetails(@RequestParam Long hotelId, Model model) {  
    Booking booking = bookingService.createBooking(hotelId,"keith"); 
    model.addAttribute(booking); 
    return "hotels/booking/enterBookingDetails"; 
} 

сервлет-context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- Configures the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/" /> 

    <!-- Configures a handler for serving static resources by forwarding to the Servlet container's default Servlet. --> 
    <default-servlet-handler /> 

    <!-- Maps view names to Tiles Definitions with support for partial re-rendering --> 
    <beans:bean id="viewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> 
     <beans:property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView"/> 
    </beans:bean> 

    <!-- Initializes the Apache Tiles CompositeView system --> 
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <beans:property name="definitions"> 
      <beans:value> 
       /WEB-INF/**/tiles.xml 
      </beans:value> 
     </beans:property> 
    </beans:bean> 

    <!-- Configures Spring Web FLow 
    <beans:import resource="webflow.xml" /> --> 

    <!-- Configures transaction management around @Transactional components --> 
    <tx:annotation-driven /> 

    <!-- Imports the application controllers that process client requests --> 
    <beans:import resource="controllers.xml" /> 


</beans:beans> 

Страница «ОТ»: -

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

<h1>${hotel.name}</h1> 
<address> 
    ${hotel.address} 
    <br /> 
    ${hotel.city}, ${hotel.state}, ${hotel.zip} 
    <br /> 
    ${hotel.country} 
</address> 
<form action="booking" method="get"> 
    <p> 
     Nightly Rate: 
     <spring:bind path="hotel.price">${status.value}</spring:bind> 
    </p> 
    <input type="hidden" name="hotelId" value="${hotel.id}" /> 
    <div> 
     <button type="submit">Book Hotel</button> 
    </div> 
</form> 

enterBookingDetails.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

<div id="bookingForm"> 
    <div class="span-5"> 
     <h3>${booking.hotel.name}</h3> 

     <address> 
      ${booking.hotel.address} 
      <br/> 
      ${booking.hotel.city}, ${booking.hotel.state}, ${booking.hotel.zip} 
      <br/> 
      ${booking.hotel.country} 
     </address> 
     <p> 
      Nightly rate: <spring:bind path="booking.hotel.price">${status.value}</spring:bind> 
     </p> 
    </div> 
. 
. 
. 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:/META-INF/spring/root-context.xml</param-value> 
    </context-param> 

    <!-- Creates the Spring Container shared by all Servlets and Filters --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- Enables use of HTTP methods PUT and DELETE --> 
    <filter> 
     <filter-name>httpMethodFilter</filter-name> 
     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>httpMethodFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <!-- Secures the application 
    <filter> 
     <filter-name>springSecurity</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
     <init-param> 
      <param-name>targetBeanName</param-name> 
      <param-value>springSecurityFilterChain</param-value> 
     </init-param> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurity</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping>--> 

    <!-- Handles all requests into the application --> 
    <servlet> 
     <servlet-name>travel</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:/META-INF/spring/travel/servlet-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>travel</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

бронирование/tiles.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE tiles-definitions PUBLIC 
    "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" 
    "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> 

<tiles-definitions> 

    <definition name="enterBookingDetails" extends="standardLayout"> 
     <put-attribute name="body" value="/WEB-INF/views/hotels/booking/enterBookingDetails.jsp"/> 
    </definition> 

    <definition name="reviewBooking" extends="standardLayout"> 
     <put-attribute name="body" value="/WEB-INF/views/hotels/booking/reviewBooking.jsp" /> 
    </definition> 

</tiles-definitions> 

Project Explorer: - enter image description here

+0

Это может быть полезно, если вы включили где ваш файл JSP находился в структуре проекта. – mugua

+0

Вы можете разместить объявление по теме tile.xml с определением вашего вида? – rptmat57

+0

Я отправлю их обоих в понедельник утром! Мне было так глупо, что я не включил их в пост! – bOgGaRt

ответ

3

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

Я хотел бы изменить свой контроллер, чтобы иметь возможность работать с объектом ModelAndView, так что вы можете сделать следующее:

@RequestMapping(value = "hotels/booking", method = RequestMethod.GET) 
    public ModelAndView bookingDetails(@RequestParameter Long hotelId) { 

    ModelAndView model = new ModelAndView("enterBookingDetails"); 
    Booking booking = bookingService.createBooking(hotelId,"keith"); 
    model.addObject("booking", booking); 
    return model; 
} 
+0

Спасибо за ваш ответ! Я просто пробовал это, но, к сожалению, я все еще получаю ту же ошибку! – bOgGaRt

+1

Извините, я видел, что ошибся в своем коде, поэтому я изменил его. Я также заметил, что вы вызываете представление с помощью «hotels/booking/enterBookingDetails», но я думаю, вам может понадобиться только назвать это имя, так как вы используете плитки, в которых вы уже объявили путь. – AlieneilA

+0

либо, либо вам нужен компонент для просмотра разрешения. – AlieneilA