मैं इस तरह एक कस्टम jsp टैग है:कस्टम जेएसपी टैग - मैं टैग का बॉडी कैसे प्राप्त करूं?
<a:customtag>
The body of the custom tag...
More lines of the body...
</a:customtag>
कस्टम टैग में, मैं क्या शरीर है का पाठ कैसे मिल सकता है?
मैं इस तरह एक कस्टम jsp टैग है:कस्टम जेएसपी टैग - मैं टैग का बॉडी कैसे प्राप्त करूं?
<a:customtag>
The body of the custom tag...
More lines of the body...
</a:customtag>
कस्टम टैग में, मैं क्या शरीर है का पाठ कैसे मिल सकता है?
यह जटिल है क्योंकि दो तंत्र हैं।
यदि आप SimpleTagSupport को विस्तारित कर रहे हैं, तो आपको getJspBody() विधि मिलती है। यह एक जेएसपीफ्रैगमेंट देता है कि आप invoke(Writer writer) लेखक को लिखित सामग्री को लिखने के लिए कर सकते हैं।
आपको SimpleTagSupport का उपयोग करना चाहिए जब तक कि आपके पास BodyTagSupport (जैसे विरासत टैग समर्थन) का उपयोग करने का कोई विशिष्ट कारण नहीं है - यह आसान है।
यदि आप क्लासिक टैग का उपयोग कर हैं, तो आप BodyTagSupport का विस्तार करते हैं और इसलिए getBodyContent() विधि तक पहुंच प्राप्त करें। यह आपको बॉडीकंटेंट ऑब्जेक्ट प्राप्त करता है कि आप शरीर की सामग्री को पुनर्प्राप्त कर सकते हैं।
Brabster's answer पर विस्तार करने के लिए, मैं SimpleTagSupport.getJspBody()
का उपयोग किया है निरीक्षण और हेरफेर के लिए एक आंतरिक StringWriter
को JspFragment
लिखने के लिए:
public class CustomTag extends SimpleTagSupport {
@Override public void doTag() throws JspException, IOException {
final JspWriter jspWriter = getJspContext().getOut();
final StringWriter stringWriter = new StringWriter();
final StringBuffer bodyContent = new StringBuffer();
// Execute the tag's body into an internal writer
getJspBody().invoke(stringWriter);
// (Do stuff with stringWriter..)
bodyContent.append("<div class='custom-div'>");
bodyContent.append(stringWriter.getBuffer());
bodyContent.append("</div>");
// Output to the JSP writer
jspWriter.write(bodyContent.toString());
}
}
}
आप JSP 2.0 दृष्टिकोण के साथ एक कस्टम टैग का उपयोग कर रहे हैं , आप यह कर सकते के रूप में:
मेकअप h1.tag
के रूप में<%@tag description="Make me H1 " pageEncoding="UTF-8"%>
<h1><jsp:doBody/></h1>
उपयोग यह JSP में:
<%@ taglib prefix="t" tagdir="/WEB-INF/tags"%>
<t:make-h1>An important head line </t:make-h1>
धन्यवाद, उस वर्ग के बारे में पता नहीं था, यह काम करता है। – Kyle
यह ध्यान देने योग्य है कि एक जेएसपीफ्रैगमेंट कम शक्तिशाली है क्योंकि यह सीमित है - यह स्क्रिप्ट रहित होना चाहिए, जहां बॉडीकंटेंट इस तरह से सीमित नहीं है। एक बॉडीकंटेंट एक आंतरिक जेएसपी पेज की तरह संक्षेप में है। – Yoni