5

struts2 構成に名前空間を追加したいのですが、タイルを使用しています。

たとえば、私の struts.xml のパッケージ:

<package name="search" namespace="/search" extends="struts-default"> 
<result-types>
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="SearchActionInit"  class="web.action.SearchAction" method="initSearch"> 
   <result name="input" type="tiles">search</result> 
   <result name="success" type="tiles">search</result> 
</action> 
</package>

対応するタイル構成:

<definition name="baseLayout"    template="layout.jsp">
    <put-attribute name="titre"               value="titre.default" />
    <put-attribute name="header"            value="/common/header.jsp" />
    <put-attribute name="menu"          value="/common/menu.jsp" />
    <put-attribute name="leftcontent"          value="/common/leftcontent.jsp" />
    <put-attribute name="rightcontent"          value="/common/rightcontent.jsp" />
    <put-attribute name="detail"          value="/common/detail.jsp" />
    <put-attribute name="footer"               value="/common/footer.jsp" />
</definition>

<definition name="search"    extends="baseLayout">
    <put-attribute name="titre"               value="titre.search" />
    <put-attribute name="rightcontent"          value="/pages/search/Search.jsp" />
</definition>

私が抱えている問題は、名前空間検索用の検索フォルダーに layout.jsp を複製する必要があることです (その他の名前空間についても同様です)。これはタイル ロジックには含まれておらず、維持するためにより多くの労力が必要になります。

重複を避けるために、この問題の鍵はありますか?

4

1 に答える 1

1

これを試して:

テンプレート:

<!-- meta template -->
<definition name="global" template="/WEB-INF/template/layout.jsp">
    <put-attribute name="attr1" value="/WEB-INF/template/attr1.jsp"/>
    <put-attribute name="attr2" value="/WEB-INF/template/attr2.jsp"/>
    <!-- more -->
</definition>

次にデータ:

<!-- instance -->
<definition name="myApp.search" extends="global">
    <put-attribute name="attr2" value="/jsp/search/search.jsp"/>
</definition>
<!-- instance -->
<definition name="myApp.page2" extends="global">
    <put-attribute name="attrN" value="/jsp/namespaceN/whatever.jsp"/>
</definition>

layout.jspページの読み込みたい部分だけを上書きする必要があります。

ここに私のプロジェクト構造があります:

Root
|
--jsp
    |
    namespace1
        |
        --*.jsp
    |
    --*.jsp
|
--WEB-INF
    |
    --template
        |
        --layout.jsp
        |
        --attr1.jsp

これで問題が解決することを願っています。

于 2012-10-18T16:51:37.473 に答える