2015-04-13 3 views
0

Я хочу интегрировать Spring MVC с Apache Tiles, учитывая версию, когда я запускаю свой webapp, он показывает странную ошибку. См. Журналы.Spring 4.1.5 и Tiles 3.0.5

Apr 13, 2015 8:35:05 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [tiles] in context with path [/TestMvcTiles] threw exception [Request processing failed; nested exception is org.apache.tiles.definition.DefinitionsFactoryException: XML error reading definitions.] with root cause 
org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 19; Document root element "tiles-definition", must match DOCTYPE root "tiles-definitions". 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1887) 
    at org.apache.tiles.definition.digester.DigesterDefinitionsReader.read(DigesterDefinitionsReader.java:325) 
    at org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO.loadDefinitionsFromResource(BaseLocaleUrlDefinitionDAO.java:150) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadRawDefinitionsFromResources(CachingLocaleUrlDefinitionDAO.java:234) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadRawDefinitionsFromResources(CachingLocaleUrlDefinitionDAO.java:225) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadRawDefinitionsFromResources(CachingLocaleUrlDefinitionDAO.java:225) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadDefinitionsFromResources(CachingLocaleUrlDefinitionDAO.java:203) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.loadDefinitions(CachingLocaleUrlDefinitionDAO.java:192) 
    at org.apache.tiles.definition.dao.ResolvingLocaleUrlDefinitionDAO.loadDefinitions(ResolvingLocaleUrlDefinitionDAO.java:68) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.checkAndloadDefinitions(CachingLocaleUrlDefinitionDAO.java:174) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinitions(CachingLocaleUrlDefinitionDAO.java:131) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:105) 
    at org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO.getDefinition(CachingLocaleUrlDefinitionDAO.java:49) 
    at org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory.getDefinition(UnresolvingLocaleDefinitionsFactory.java:89) 
    at org.apache.tiles.impl.BasicTilesContainer.getDefinition(BasicTilesContainer.java:286) 
    at org.apache.tiles.impl.BasicTilesContainer.isValidDefinition(BasicTilesContainer.java:273) 
    at org.apache.tiles.renderer.DefinitionRenderer.isRenderable(DefinitionRenderer.java:64) 
    at org.springframework.web.servlet.view.tiles3.TilesView.checkResource(TilesView.java:116) 
    at org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:483) 
    at org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:244) 
    at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:446) 
    at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:156) 
    at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1267) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

/WEB-INF/web.xml

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

<display-name>tiles</display-name> 
     <servlet> 
       <servlet-name>tiles</servlet-name> 
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
       <load-on-startup>1</load-on-startup>  
     </servlet> 

     <servlet-mapping> 
       <servlet-name>tiles</servlet-name> 
       <url-pattern>*.htm</url-pattern> 
     </servlet-mapping> 

     <listener> 
       <listener- class>org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 
     <welcome-file-list> 
       <welcome-file> 
        home.htm 
       </welcome-file> 
     </welcome-file-list> 
</web-app> 

/WEB-INF/tiles-servlet.xml

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

<context:component-scan base-package="com.test.controller"/> 
     <mvc:annotation-driven/>  
</beans> 

/WEB-INF/ApplicationContext .xml

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

<context:component-scan base-package="com.test.controller"/> 
     <context:annotation-config/> 
     <mvc:annotation-driven/> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass"> 
      <value>org.springframework.web.servlet.view.tiles3.TilesView</value> 
     </property>   
    </bean> 
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
        <value>/WEB-INF/tiles/tilesJsp.xml</value> 
      </list> 
     </property> 
    </bean> 
</beans> 

/WEB-INF/tiles/tilesJsp.xml

<!DOCTYPE tiles-definitions PUBLIC 
     "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 
     "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 
<tiles-definition> 
    <definition name="baseLayout" template="/WEB-INF/view/base.jsp"> 
     <put-attribute name="title" value="Spring MVC And Tiles"/> 
     <put-attribute name="header" value="/WEB-INF/view/header.jsp"/> 
     <put-attribute name="menu" value="/WEB-INF/view/menu.jsp"/> 
     <put-attribute name="body" value=""/> 
     <put-attribute name="footer" value="/WEB-INF/view/footer.jsp"/> 
    </definition> 

    <definition name="home" extends="baseLayout"> 
     <put-attribute name="title" value="Home"/> 
     <put-attribute name="body" value="/WEB-INF/view/home.jsp"/> 
    </definition> 

    <definition name="page" extends="baseLayout"> 
     <put-attribute name="title" value="Page"/> 
     <put-attribute name="body" value="/WEB-INF/view/page.jsp"/> 
    </definition> 
</tiles-definition> 

/MYPROJ/Java ресурсы/SRC/COM/тест/контроллер/HomeController.xml

package com.test.controller; 

import javax.servlet.http.HttpServletRequest; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 

@Controller 
public class HomeController { 

    @RequestMapping("/home.htm") 
    public String home(){ 
     System.out.println("Home"); 
     return "home"; 
    } 

    @RequestMapping("/page.htm") 
    public String page(@RequestParam(value="pageNo") String pageNo, HttpServletRequest request){ 
     System.out.println("Page No: "+pageNo); 
     request.setAttribute("pageNo", pageNo); 
     return "page"; 
    } 
} 

/WEB-INF/view/ содержит файлы .jsp.

ответ

1

StackTrace говорит, что это:

org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 19; Document root element "tiles-definition", must match DOCTYPE root "tiles-definitions". 

Вы плитки определения начинается так:

<!DOCTYPE tiles-definitions PUBLIC 
    "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 
    <tiles-definition> 

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

Документация подтверждает, что это правильное имя элемента.
https://tiles.apache.org/framework/tutorial/basic/pages.html

+0

что .... лол ... спасибо человеку –

+0

ли он работать? Вы должны принять ответ, если он исправил проблему. –

0

Я попробовал ответ Бена, и он по-прежнему дал мне ту же ошибку, после чего я заменил его, и он работал нормально.

Обновить код:

<!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> 
Смежные вопросы