2010-08-17 14 views
6

:जेएसपी - क्या मैं <jsp: विशेषता><c:if> के अंदर उपयोग कर सकता हूं? अपवाद: "का उपयोग करना चाहिए jsp: बॉडी टैग शरीर निर्दिष्ट करने के लिए" मैं एक JSP अंदर निम्नलिखित है

Must use jsp:body to specify tag body for &lt;MyTag if jsp:attribute is used. 

अगर मैं निकालें:

<c:if test="${true}"> 
<jsp:attribute name="extraInlineComplianceJavascript"> 
window.isSummaryComplianceLinkVisible = '${TabList.isSummaryComplianceLinkVisible}'; 
window.isDetailComplianceLinkVisible = '${TabList.isDetailComplianceLinkVisible}'; 
window.complianceSummaryReportTag = '${helper.complianceSummaryReportTag}'; 
window.complianceDetailReportTag = '${helper.complianceReportTag}'; 
</jsp:attribute> 
</c:if> 

के रूप में है, मैं निम्नलिखित अपवाद बाहरी <c:if> टैग, यह काम करता है। <c:if> के अंदर <jsp:attribute> का उपयोग करने में कोई समस्या है? किसी भी सहायता की सराहना की जाएगी। धन्यवाद।

+1

अंधेरे में एक शूट: 'csp: if' के अंदर 'jsp: विशेषता' के अंदर आज़माएं। – BalusC

उत्तर

5

तत्व का शरीर संबंधित तत्व के शरीर के रूप में निश्चित रूप से परिभाषित किया गया है। शरीर को < जेएसपी: शरीर > का उपयोग करके स्पष्ट रूप से प्रदर्शित किया जा सकता है। यह आवश्यक है यदि एक या अधिक < jsp: विशेषता > तत्व टैग के शरीर में दिखाई देते हैं। element, attribute और body के संदर्भों को चेकआउट करें।

लेकिन यह वास्तविक समस्या नहीं है। समस्या < jsp है: विशेषता > सशर्त टैग के साथ अच्छी तरह से खेल नहीं है। < jsp: विशेषता > अपने मूल टैग पर विशेषता सेट करने का प्रयास कर रहा है, जो आपके उदाहरण में < सी है: यदि >।

आप इस्तेमाल कर सकते हैं < c: अगर > तत्व के अंदर (BalusC उसकी टिप्पणी में सुझाव के रूप में), लेकिन यह एक खाली मूल्य के साथ एक एक विशेषता में परिणाम होगा, या आप जा सकते हैं से:

<jsp:element ...> 
    <c:if test="${true}"> 
    <jsp:attribute name="extraInlineComplianceJavascript"> 
     .... 
    </jsp:attribute> 
    </c:if> 
</jsp:element> 

करने के लिए (एक और अधिक शब्द):

<c:if test="${true}"> 
    <jsp:element ...> 
    <jsp:attribute name="extraInlineComplianceJavascript"> 
     .... 
    </jsp:attribute> 
    </jsp:element> 
</c:if> 
<c:if test="${false}"> 
    <jsp:element ...> 
    <!-- no attribute for false --> 
    </jsp:element> 
</c:if> 

तुम भी एक < ग इस्तेमाल कर सकते हैं: > चुनें। और निश्चित रूप से यह एक से अधिक गुणों के साथ अच्छी तरह से काम नहीं करेगा: डी।

मेरा व्यक्तिगत सुझाव < jsp: विशेषता > को फेंकना होगा और सशर्त रूप से अपने विशेषताओं को सेट करने का एक और तरीका ढूंढें।