2016-06-03 2 views
0

Ich habe versucht, einige ähnliche Fragen zu StackOverflow zu lesen, konnte aber nicht wirklich verstehen! Dies ist meine erste Spring-Anwendung, daher entschuldige ich mich für eine möglicherweise doppelte Frage. Jede Hilfe würde wirklich geschätzt werden.javax.servlet.ServletException: Konnte die Ansicht mit dem Namen 'hotels/booking/enterBookingDetails' im Servlet mit dem Namen 'travel' nicht auflösen

ich die folgende Fehlermeldung erhalten, wenn ich navigieren zu enterDetails Seite: -

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] 

Hier ist der Controller: -

@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"; 
} 

Servlet-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> 

Die 'VON' Seite: -

<%@ 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> 

Buchung/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> 

Projekt-Explorer: - enter image description here

+0

Es nützlich sein könnte, wenn Sie enthalten, wo Ihre JSP-Datei in der Projektstruktur angeordnet war. – mugua

+0

könnten Sie die relevante tile.xml mit der Definition Ihrer Sicht veröffentlichen? – rptmat57

+0

Ich poste beide am Montagmorgen! Es war so dumm von mir, sie nicht in die Post aufzunehmen !! – bOgGaRt

Antwort

3

Ich bin neu hier, aber ich habe an einigen Frühlings-MVC-Projekten gearbeitet. So hoffe ich, zur Lösung Ihres Problems beizutragen.

würde ich Ihren Controller ändern, um mit dem Modeland Objekt zu arbeiten, so dass Sie Folgendes tun:

@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

Danke für Ihre Antwort! Ich habe es gerade versucht, aber leider bekomme ich immer noch genau den gleichen Fehler! – bOgGaRt

+1

Entschuldigung, ich habe gesehen, dass ich einen Fehler in meinem Code gemacht habe, also habe ich ihn geändert. Ich habe auch bemerkt, dass Sie die Ansicht mit "hotels/booking/enterBookingDetails" aufrufen, aber ich denke, dass Sie nur den Namen aufrufen müssen, da Sie die Kacheln verwenden, in denen Sie den Pfad bereits deklariert haben. – AlieneilA

+0

entweder, oder Sie benötigen eine Bean für View Auflösung. – AlieneilA

Verwandte Themen