2012-01-18 17 views
8

मैं एक मौजूदा टाइल्स 1 वेबपैप को टाइल्स 2 आर्किटेक्चर में परिवर्तित कर रहा हूं। मुझे जेएसपी पेज से टाइल्स विशेषताओं के मूल्यों को पार करने में परेशानी हो रही है।जेएसपी से टाइल्स विशेषता में मूल्य कैसे पास करें?

<html> 
    <head> 
    <title><tiles:insertAttribute name="pageTitle" flush="true"/></title> 
    </head> 

    <body> 
    ... 
    ... 

    <div class="content"> 
    <h1><tiles:insertAttribute name="pageHeader" flush="true"/></h1> 
    </div> 

    ... 
    ... 
    </body> 
</html> 

मैं जो लेआउट का उपयोग करता एक कहानी पृष्ठ है और की जरूरत है:

यहाँ मेरी टाइल्स परिभाषा फ़ाइल (टाइल-definition.xml)

<tiles-definitions> 

    <definition name="cda.layout" template="/jsp/layouts/layout.jsp"> 
     <put-attribute name="pageTitle" value="StoryTitle" type="string"/> 
     <put-attribute name="pageHeader" value="StoryHeader" type="string"/> 
     <put-attribute name="resources" value="" type="string"/> 
    </definition> 

</tiles-definitions> 

layout.jsp लगता है कि है टेम्पलेट विशेषताओं को मान पास करें।

<% 
    // create a business object and populate 
    String mytitle= story.getTitle(); 
    String myheader = story.getHeader(); 
    %> 

<tiles:insertTemplate template="../layouts/layout.jsp" flush="false" > 
    <tiles:putAttribute name="pageTitle" value="${mytitle}"/> 
    <tiles:putAttribute name="pageHeader"value="${myheader}"/> 
</tiles:insertTemplate> 

story.jsp में, मैं System.out.print कर सकते हैं() mytitle, myheader के लिए मूल्यों और वे सही दिखा रहे हैं। लेकिन, ये मान टाइल विशेषताओं पर नहीं भेजे जाते हैं।

कोई विचार यह कैसे ठीक करें?

उत्तर

17

${mytitle} एक जेएसपी ईएल अभिव्यक्ति है जिसका अर्थ है: पृष्ठ स्कोप में एक विशेषता पाएं, या स्कोप, या सत्र स्कोप, या एप्लिकेशन स्कोप, "mytitle" नाम का अनुरोध करें।

एक स्क्रिप्टलेट वैरिएबल को परिभाषित करके, आपने इनमें से किसी भी स्कोप में कोई विशेषता परिभाषित नहीं की है। यह काम करेगा यदि आपके पास

pageContext.setAttribute("mytitle", mytitle); 

लेकिन जेएसपी में स्क्रिप्टलेट का उपयोग करना बुरा अभ्यास है। मुझे नहीं पता कि आपकी कहानी बीन कहां से आती है, लेकिन शायद यह एक अनुरोध विशेषता है। यदि हां, तो आप एक नया पृष्ठ-गुंजाइश इस तरह से विशेषता परिभाषित कर सकते हैं, JSTL का उपयोग कर:

<c:set var="mytitle" value="${story.title}"/> 

यह हालांकि अनावश्यक है, आप टाइल्स टैग में सीधे इस अभिव्यक्ति इस्तेमाल कर सकते हैं के बाद से:

<tiles:putAttribute name="pageTitle" value="${story.title}"/> 

this tutorial में जेएसपी ईएल के बारे में और पढ़ें।

+0

जेबी, वह समाधान काम किया। बहुत बहुत धन्यवाद। –

+0

आपके उत्तर के लिए धन्यवाद, मैं इस समाधान का उपयोग कर रहा हूं लेकिन मुद्दा यह है कि आउटपुट $ {story.title} कहानी का शीर्षक होगा। जैसा कि आप $ {story.title} को एक चर और मान के रूप में माना जाएगा। हालांकि, मैं इसे जावा से जेएसपी नहीं भेज रहा हूं। –

संबंधित मुद्दे