2

Struts2 プロジェクトでタイルを使用して、レイアウトを動的に生成しています。問題は、私の tiles.xml ファイルに多くの冗長性が必要なことです。そこで、この問題を解決するために、タイルでワイルドカードを使用することにしました。

このチュートリアルを読み、すべての指示に従いました。Maven を使用して webapp を作成しました。私の設定ファイルを見てください。

このリンクを呼び出すと:

localhost/test -> it works
localhost/** -> it works
localhost/test2 -> it does not work anymore, so wildcard was not called

私を助けてください。この問題を解決する方法がわかりません。ありがとうございました!

  1. pom.xml

        <project xmlns="http://maven.apache.org/POM/4.0.0" 
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                                     http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>projectName</groupId>
      <artifactId>tilesWildcard</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>tilesWildcard Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-tiles-plugin</artifactId>
            <version>2.3.8</version>
        </dependency>
      </dependencies>
      <build>
        <finalName>tilesWildcard</finalName>
      </build>
    </project>
    
  2. src/main/resources/struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
        <constant name="struts.devMode" value="true" />
        <constant name="struts.ui.theme" value="simple" />
        <constant name="struts.enable.SlashesInActionNames" value="true" />
        <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
        <package  name="basicstruts2"  namespace="" extends="tiles-default">
            <result-types>
                <result-type name="tiles" default="true" 
                             class="org.apache.struts2.views.tiles.TilesResult"/>
            </result-types>
    
            <action name="/**" >
                <result>{1}</result>
            </action>
        </package>
    </struts>
    
  3. /WEB-INF/tiles.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
           "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
    <tiles-definitions>
        <definition name="baseLayout" template="/WEB-INF/tiles/template.jsp">
            <put-attribute name="title" value="Default Title"/>
            <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
            <put-attribute name="body" value="/WEB-INF/tiles/body.jsp"/>
            <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"/>
        </definition>
        <definition name="test" extends="baseLayout">
            <put-attribute name="Test Title" value="Default Title"/>
        </definition>
        <definition name="package/*" extends="baseLayout">
            <put-attribute name="title" value="{1}" type="string"/>
        </definition>
        <definition name="" extends="baseLayout">
        </definition>
    </tiles-definitions>
    
  4. ファイル構造

    /WEB-INF
      /tiles/body.jsp
      /tiles/footer.jsp
      /tiles/header.jsp
      /tiles/template.jsp
    
4

1 に答える 1

0

返信が非常に遅くなって申し訳ありませんが、次のように呼び出しています:localhost / test2ですが、タイルの定義は「package / *」であるため、localhost / package/test2を呼び出す必要があります。

于 2013-01-23T07:12:39.180 に答える