2

tiles.xml にそのような定義があります。

<definition name="t.base" template="/WEB-INF/tiles/base.jsp">
    <put-attribute name="title" value="SomeTitle" />
    <put-attribute name="menu" value="/WEB-INF/tiles/menu.jsp" />
    <put-attribute name="scripts" value="/WEB-INF/tiles/scripts.jsp" />
</definition>

<definition name="t.homepage" extends="t.base" preparer="com.blogspot.symfonyworld.lyricsbase.controller.TestViewPreparer">
    <put-list-attribute name="body">
        <add-attribute value="/WEB-INF/jsp/homepage.jsp" />
        <add-attribute value="/WEB-INF/tiles/footer.jsp" />
    </put-list-attribute>
    <put-attribute name="title" value="lyricsBase : home of lyrics" />
    <put-attribute name="view" value="homepage" cascade="true" />
</definition>

ホームページのリクエストが処理されると、コンパイラは例外をスローします。

org.xml.sax.SAXParseException; lineNumber: 29; columnNumber: 18; The content of element type "definition" must match "(put-attribute*,put-list-attribute*)".
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)

何が問題なのかわかりません。タイルのドキュメントによると、XML 構文は正しいようです。

4

1 に答える 1

7

<put-list-attribute>要素は、次のように定義の最後にある必要があります。

<definition name="t.homepage" extends="t.base" preparer="com.blogspot.symfonyworld.lyricsbase.controller.TestViewPreparer">
    <put-attribute name="title" value="lyricsBase : home of lyrics" />
    <put-attribute name="view" value="homepage" cascade="true" />
    <put-list-attribute name="body">
        <add-attribute value="/WEB-INF/jsp/homepage.jsp" />
        <add-attribute value="/WEB-INF/tiles/footer.jsp" />
    </put-list-attribute>
</definition>
于 2013-10-01T12:45:46.973 に答える