2012-10-18 16 views
5

Voglio aggiungere spazi dei nomi nella mia configurazione struts2 e utilizzo le tessere.Utilizzo di più spazi dei nomi Struts2 con tessere

Un pacchetto di mia struts.xml ad esempio:

<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> 

E la configurazione piastrelle corrispondenti:

<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> 

Il problema che ho è che ho bisogno di duplicare il layout.jsp in un cartella di ricerca per la ricerca dello spazio dei nomi (e così via per gli altri spazi dei nomi). Non è nella logica delle tessere e porterà più sforzo per mantenere.

Qualcuno ha una chiave per questo problema per evitare la duplicazione?

+0

Ciao, non capisco, perché devi duplicare layout.jsp. e non devi definire 'result-types', prova questo:' ' – Jaiwo99

+0

Thx per la tua risposta. Nessuna modifica con l'aggiunta di tile-default. Devo duplicare perché sta aspettando un layout.jsp in una cartella con lo stesso nome del namespace. Ad esempio in questo esempio, rinominare il layout.jsp e ottengo un errore 404 (search/layout.jsp non trovato). – Rydermark

+0

Ho finalmente capito la tua domanda ora. Ti darò la risposta più tardi .. – Jaiwo99

risposta

1

provare questo:

modello:

<!-- 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> 

quindi i dati:

<!-- 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> 

È sufficiente sovrascrivere la parte della pagina layout.jsp, che si desidera caricare.

qui è la mia struttura del progetto:

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

Spero che questo risolve il problema.

+0

Thx Jaiwo. Ho fatto alcuni test. Il punto importante è mettere un percorso per il layout. (Non mettere "layout.jsp" ma "/layout.jsp") Apri gli occhi! – Rydermark