2016-07-19 4 views
0

Ich erhalte einen Fehler, wenn ich Apache Fliesen 3 mit Frühling MVC 4 integrieren möchte. Bitte helfen Sie mir mit dieser Situation. Idee ist es, Seiten zu erstellen, die mit Apache Tiles dynamisch aktualisiert werden. Ich habe die Abhängigkeiten überprüft und sie scheinen alle in Ordnung zu sein. Ich denke, dass meine Konfiguration etwas fehlt oder der Controller die Kachel-Konfigurationsdatei nicht erkennt.Konnte Sicht mit Namensfehler nicht auflösen Frühling MVC 4 + Apache-Fliesen 3

Bitte helfen Sie mir dabei. Ich bin ziemlich neu in der Entwicklung von Spring MVC und Apache Tiles Anwendungen. Bitte schlage vor, was mit diesem Code schief gegangen sein könnte.

Config Klasse

package com.naveen.PizzaPlace.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.tiles3.TilesConfigurer; 
import org.springframework.web.servlet.view.tiles3.TilesViewResolver; 

@Configuration 
@ComponentScan(basePackages = "com.naveen.PizzaPlace") 
@EnableWebMvc 
public class MvcConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 

    /** 
    * Configure TilesConfigurer. 
    */ 
    @Bean 
    public TilesConfigurer tilesConfigurer() { 
    TilesConfigurer tilesConfigurer = new TilesConfigurer(); 
    tilesConfigurer.setDefinitions(new String[] { "/WEB-INF/tiles.xml" }); 
    tilesConfigurer.setCheckRefresh(true); 
    return tilesConfigurer; 
    } 

    /** 
    * Configure ViewResolvers to deliver preferred views. 
    */ 
    @Override 
    public void configureViewResolvers(ViewResolverRegistry registry) { 
    TilesViewResolver viewResolver = new TilesViewResolver(); 
    registry.viewResolver(viewResolver); 
    } 

} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>PizzaPlace</display-name> 

    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value> 
       org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
      </param-value> 
     </init-param> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>com.naveen.PizzaPlace</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 

</web-app> 

tiles.xml

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE tiles-definitions PUBLIC 
     "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 
     "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 

<tiles-definitions> 

    <!-- Base Definition --> 
    <definition name="app.default" template="/WEB-INF/layouts/default.jsp"> 
     <put-attribute name="title" value="Pizza Place application" /> 
     <put-attribute name="header" value="/WEB-INF/layouts/header.jsp" /> 
     <put-attribute name="menu" value="/WEB-INF/layouts/menu.jsp" /> 
     <put-attribute name="body" value="" /> 
     <put-attribute name="footer" value="/WEB-INF/layouts/footer.jsp" /> 
    </definition> 

    <!-- Home Page --> 
    <definition name="app.homepage" extends="base-definition"> 
     <put-attribute name="body" value="/WEB-INF/views/home.jsp" /> 
    </definition> 

</tiles-definitions> 

Controller

package com.naveen.PizzaPlace.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class HomeController { 

    @RequestMapping("/") 
    public String defaultPages() { 
    return "app.homepage"; 
    } 
} 

Fehlertrace

Jul 18, 2016 8:21:12 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [SpringDispatcher] in context with path [/PizzaPlace] threw exception [Could not resolve view with name 'app.homepage' in servlet with name 'SpringDispatcher'] with root cause 
javax.servlet.ServletException: Could not resolve view with name 'app.homepage' in servlet with name 'SpringDispatcher' 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1237) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:106) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+0

Ein kleiner Zweifel, wie ich Apache Kachel nicht vertraut bin, haben Sie immer noch als , sondern die Basis angegeben -Definition ist nicht definiert (i t's App-Standard). Könnten Sie bitte ändern und es erneut versuchen? –

+0

Ja, das war der Fehler! Ich habe es korrigiert! Vielen Dank! ** Antwort ist: app.homepage sollte app.default erweitern ** –

+0

Es ist eine gute Nachricht, bitte akzeptieren Sie es als gültige Antwort, wenn es Ihr Problem löst :) –

Antwort

1

Sie haben als angegeben, aber die Basis-definiation nicht definiert ist (es App-default) .Es sollte entweder app-default oder App erweitern -default sollte als app-base geändert werden

+0

Danke, das hilft !!!! –

Verwandte Themen