0

編集: Spring 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/views/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>

最後に、速度ファイル home.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ビューリゾルバーの順序を指定しました。

私はこの技術にかなり慣れていません。助けてください。前もって感謝します。

4

4 に答える 4

0

次のように tiles.xml を変更すると、template="WEB-INF/views/layout.jsp"無限ループの問題が解決しますが、まだいくつかの問題があります。こちらも直したら助かります

于 2013-08-17T11:53:49.300 に答える
0

私は一般的に Tiles と Spring の初心者であり、tiles.xml ファイルを定義するときに同じ問題がありました。

上記の投稿されたソリューションと、私が直面した問題を詳しく説明するための私自身の経験でここに回答します。

の属性の値に問題がありました<definition name="welcome" .. >

moviestitle 属性と見出し属性の値として' ' を配置しました。ただし、' 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>
于 2016-05-28T02:59:28.210 に答える
0

追加してみる

</tiles-definitions>

の終わりにtiles.xml

于 2013-04-03T07:43:20.023 に答える