2010-10-30 17 views
8

करने के लिए गैर स्ट्रिंग विशेषता पासिंग यह एक कस्टम JSTL टैग स्वीकार करता है कि एक गैर-स्ट्रिंग विशेषता बनाने के लिए संभव है?कस्टम JSTL टैग

मैं एक टैग है कि वसंत MVC से PagedListHolder का उपयोग कर पृष्ठांकन संभाल की जाएगी बनाना चाहेंगे।

<%@tag body-content="scriptless" description="basic page template" pageEncoding="UTF-8"%> 

<%-- The list of normal or fragment attributes can be specified here: --%> 
<%@attribute name="pagedList" required="true" %> 

<%-- any content can be specified here e.g.: --%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<c:choose> 
    <c:when test="${!pagedList.firstPage}"> 
     <a href=" 
      <c:url value="pagedList"> 
       <c:param name="page" value="${pagedList.page - 1}"/> 
      </c:url> 
      ">&lt;&lt; 
     </a> 
    </c:when> 
    <c:otherwise> 
     &lt;&lt; 
    </c:otherwise> 
</c:choose> 

<%-- ...more --%> 

इस टैग को PagedListHolder क्लास के उदाहरण की आवश्यकता होगी।

इस तरह की क्रमबद्ध करें, लेकिन मुझे पता है यह मान्य नहीं है।

<templ:pagedList pagedList="${players}"/> 

क्या मुझे इसे प्राप्त करने के लिए टैग हैंडलर लिखने की आवश्यकता है?

उत्तर

8

तुम बस विशेषता के निर्देश पर type विशेषता निर्दिष्ट कर सकते हैं।

<%@ attribute name="pagedList" required="true" type="org.springframework.beans.support.PagedListHolder" %> 
+0

टैग फ़ाइलों पर पूरी तरह पढ़ने के बाद, मैं सोच रहा था कि टैग टैग के साथ यह संभव होना चाहिए। आपकी टिप्पणी ने पुष्टि की। मैने इसे आजमाया और इसने कार्य किया। धन्यवाद! – prasopes

+0

हाँ, मुझे टैग फाइल पसंद है। मैं खुशी से मदद कर सकता है। :) –

2

संक्षेप में:

public class PagedListTag extends RequestContextAwareTag { 

    private PagedListHolder pagedList; 

    @Override 
    protected int doStartTagInternal() throws Exception { 
     // do something with pagedList 
     return SKIP_BODY; 
    } 

    @Override 
    public void doFinally() { 
     this.pagedList = null; 
     super.doFinally(); 
    } 

    public void setPagedListed(PagedListHolder pagedList) { 
     this.pagedList = pagedList; 
    } 
} 

केवल एक चीज आप क्या करना है के लिए है: JSTL टैग के रूप में आप वसंत MVC का उपयोग कर रहे हैं, अपनी टैग वर्ग ऐसा दिखाई दे सकता, गैर स्ट्रिंग विशेषताओं की अनुमति दी जाती यह ठीक से रजिस्टर अपने .TLD फ़ाइल में pagedList विशेषता के साथ:

... 
<tag> 
    <name>pagedList</name> 
    <tag-class>PagedListTag</tag-class> 
    <body-content>JSP</body-content> 
    <attribute> 
     <name>pagedList</name> 
     <required>true</required> 
     <rtexprvalue>true</rtexprvalue> 
    </attribute> 
</tag> 
... 
+0

धन्यवाद! ऐसा लगता है कि मुझे टैग हैंडलर को सभी के बाद देखना होगा। – prasopes

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