1

次の tiles-def.xml があります。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>

<definition name="contact" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" />
</definition>

<definition name="hello" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
</definition>
</tiles-definitions>

ご覧のとおり、私のすべてのページで、本体だけが変更されています。これを自動化する方法はありますか?(したがって、要求されたページの名前を持つ JSP が自動的に含まれるか、存在しない場合はエラー ページが含まれますか?)

ありがとうございました!

編集:私がやりたいことの詳細:

現在の状況: webapp の新しいページごとに、tiles-def.xml に新しいページを追加する必要があります。そして毎回、それが行う唯一のことは、私のコンテンツページで本文を設定することです.

私がやりたいこと: 表示するページを自動的に選択するデフォルトの定義を 1 つだけ用意します。次のようなものです。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    if(myPageName exists){
        <put-attribute name="body" value="/WEB-INF/jsp/" + myPageName + ".jsp" />
    else{
        <put-attribute name="body" value="/WEB-INF/jsp/error404.jsp" />
    }
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>
</tiles-definitions>

myPageName は要求されたページの名前になります (URL が「http://www.mysite.com/contact.html」の場合、myPageName は「contact」になります。「http://www.mysite の場合」 .com/info.html" の場合、myPageName は "info" になります)。

これどうやってするの?

4

1 に答える 1

1

springbyexample.org ページの動的タイルの例を確認してください。DynamicTilesView はまさにあなたが望むことを行います (ここで構成例を参照してください)。ダイナミック タイルの完全な例は、こちらの githubにあります。

于 2012-08-31T08:33:18.260 に答える