2012-10-18 17 views
5

के साथ एकाधिक स्ट्रूट 2 नामस्थानों का उपयोग करके मैं अपने 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 नकल करने की जरूरत है नेमस्पेस खोज के लिए खोज फ़ोल्डर (और अन्य नामस्थानों के लिए)। यह टाइल्स तर्क में नहीं है और बनाए रखने के लिए और अधिक प्रयास लाएगा।

क्या कोई भी इस समस्या के लिए नकल से बचने के लिए कुंजी है?

+0

हाय, मुझे समझ में नहीं आता है, आपको layout.jsp को डुप्लिकेट क्यों करना है। और आपको 'परिणाम-प्रकार' को परिभाषित करने की आवश्यकता नहीं है, इसे आज़माएं: '' – Jaiwo99

+0

आपके उत्तर के लिए Thx। टाइल्स-डिफॉल्ट जोड़ना कोई बदलाव नहीं है। मुझे डुप्लिकेट करने की आवश्यकता है क्योंकि वह नामस्थान के समान नाम वाले फ़ोल्डर में layout.jsp का इंतजार कर रहा है। उदाहरण के लिए, मैं लेआउट.जेएसपी का नाम बदलता हूं और मुझे 404 त्रुटि मिलती है (खोज/लेआउट.जेएसपी नहीं मिला)। – Rydermark

+0

मैं अंत में अब आपके प्रश्न को समझता हूं। मैं आपको बाद में जवाब दूंगा .. – Jaiwo99

उत्तर

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 

मुझे आशा है कि यह आपकी समस्या का हल:

यहाँ अपने प्रोजेक्ट संरचना है।

+0

Thx Jaiwo। मैंने कुछ परीक्षण किए। महत्वपूर्ण बिंदु लेआउट के लिए एक रास्ता डालना है। ("Layout.jsp" नहीं डालें लेकिन "/layout.jsp") आप मेरी आंखें खोलें! – Rydermark