2013-04-03 11 views
0

編輯: 我想要使用彈簧MVC與Velocity集成瓷磚。 我的服務器正在進入無限循環。 服務器的控制檯讀取是: 我已將循環的開始標記爲「 - >」。服務器進入無限循環,同時實施瓷磚與速度

--> at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311) 
    at org.apache.jsp.WEB_002dINF.views.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f0(layout_jsp.java:102) 
    at org.apache.jsp.WEB_002dINF.views.layout_jsp._jspService(layout_jsp.java:69) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544) 
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954) 
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684) 
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96) 
    at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321) 
    at org.apache.tiles.renderer.impl.DefinitionAttributeRenderer.write(DefinitionAttributeRenderer.java:56) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336) 
    at org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210) 
    at org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126) 
--> at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311) 
    at org.apache.jsp.WEB_002dINF.views.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f0(layout_jsp.java:102) 
    at org.apache.jsp.WEB_002dINF.views.layout_jsp._jspService(layout_jsp.java:69) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544) 
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954) 
    at org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:684) 
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:678) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.include(JspTilesRequestContext.java:103) 
    at org.apache.tiles.jsp.context.JspTilesRequestContext.dispatch(JspTilesRequestContext.java:96) 
    at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321) 
    at org.apache.tiles.renderer.impl.DefinitionAttributeRenderer.write(DefinitionAttributeRenderer.java:56) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer.write(ChainedDelegateAttributeRenderer.java:76) 
    at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670) 
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:336) 
    at org.apache.tiles.template.InsertAttributeModel.renderAttribute(InsertAttributeModel.java:210) 
    at org.apache.tiles.template.InsertAttributeModel.end(InsertAttributeModel.java:126) 
    at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:311) 
--> at org.apache.jsp.WEB_002dINF.views.layout_jsp._jspx_meth_tiles_005finsertAttribute_005f0(layout_jsp.java:102) 

    AND SO ON... 

我有下面的代碼在我的servlet-context.xml的

<beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
     <beans:property name="order" value="0"/> 
    </beans:bean> 

    <beans:bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> 
     <beans:property name="resourceLoaderPath" value="/WEB-INF/views/" /> 
    </beans:bean> 

    <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 
     <beans:property name="cache" value="true"/> 
     <beans:property name="prefix" value=""/> 
     <beans:property name="suffix" value=".vm"/> 
     <beans:property name="order" value="2"/> 
    </beans:bean> 

    <beans:bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <beans:property name="definitions"> 
     <beans:list> 
      <beans:value>/WEB-INF/tiles.xml</beans:value> 
     </beans:list> 
    </beans:property> 
    </beans:bean> 

我的WEB-INF /視圖/ layout.jsp是

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title><tiles:insertAttribute name="title"/> </title> 
</head> 
<body> 
<tiles:insertAttribute name="body"/> 
</body> 
</html> 

,最後我的速度文件家.vm是:

<html> 
<body> 
<h1> 
    Hello world! 
</h1> 
##This is comment 
<P> The time on the server is ${serverTime}. </P> 
</body> 
</html> 

tiles.xml:

<tiles-definitions> 
    <definition name="base.definition" template="/WEB-INF/views/layout.jsp"> 
      <put-attribute name="title" value="" /> 
      <put-attribute name="body" value="" /> 
    </definition> 

    <definition name="home" extends="base.definition"> 
      <put-attribute name="title" value="home" /> 
      <put-attribute name="body" value="/WEB-INF/views/home.vm" /> 
    </definition> 
<tiles-definitions> 

我讀到了,您可以使用多個視圖解析器來指定順序。 SO我指定了視圖解析器的順序。

我對這項技術很新穎。請幫忙。 在此先感謝。

回答

0

嘗試增加

</tiles-definitions> 

截至tiles.xml年底。

+0

感謝。我錯過了。現在它沒有顯示任何東西。進入無限循環。我在解析器中丟失了什麼? –

0

修改您的tiles.xml如下template="WEB-INF/views/layout.jsp"它爲我解決了無限循環問題,但仍然存在一些問題。如果您修復了這個問題,請幫助我

1

錯誤是由於您的屬性'title'設置了與定義名稱相同的值導致的。瓷磚可以使用嵌套;在案例中的標題,重定向到自己導致循環。 一個簡單的解決方法是將標題值更改爲不是定義名稱的東西。

變化

<put-attribute name="title" value="home" /> 

<put-attribute name="title" value="home page" /> 

-

<tiles-definitions> 
    <definition name="base.definition" template="/WEB-INF/views/layout.jsp"> 
     <put-attribute name="title" value="" /> 
     <put-attribute name="body" value="" /> 
    </definition> 
    <definition name="home" extends="base.definition"> 
     <put-attribute name="title" value="home page" /> 
     <put-attribute name="body" value="/WEB-INF/views/home.vm" /> 
    </definition> 
<tiles-definitions> 
0

我是新手在普通瓷磚和Spring和有同樣的問題定義我tiles.xml文件時。

接聽特此與上述公佈的解決方案和我自己的經驗來闡述問題,我面對:

的問題是在值的屬性<definition name="welcome" .. >

我將'movies'作爲標題和標題屬性的值。但是,'movies'不應該被用作值,因爲它被用作定義。

當改變「movie」爲其他值(「我的電影之家」),它工作得很好。

我的錯誤(堆棧溢出)使代碼:

<definition name="welcome" extends="baseLayout"> 
    <put-attribute name="title" value="movies" /> 
    <put-attribute name="heading" value="movies" /> 
    <put-attribute name="tagline" value="Welcome to Movie Store" /> 
    <put-attribute name="content" value="/WEB-INF/views/movies.jsp" /> 
</definition> 
<definition name="movies" extends="baseLayout"> 
    <put-attribute name="title" value="Movies list" /> 
    <put-attribute name="heading" value="Movies List" /> 
    <put-attribute name="tagline" value="Available Products" /> 
    <put-attribute name="content" value="/WEB-INF/views/movies.jsp" /> 
</definition> 

以下是解決問題的方法:

<definition name="welcome" extends="baseLayout"> 
    <put-attribute name="title" value="My Movies Home" /> 
    <put-attribute name="heading" value="My Movies Home" /> 
    <put-attribute name="tagline" value="Welcome to Movie Store" /> 
    <put-attribute name="content" value="/WEB-INF/views/movies.jsp" /> 
</definition> 
<definition name="movies" extends="baseLayout"> 
    <put-attribute name="title" value="Movies list" /> 
    <put-attribute name="heading" value="Movies List" /> 
    <put-attribute name="tagline" value="Available Products" /> 
    <put-attribute name="content" value="/WEB-INF/views/movies.jsp" /> 
</definition>