1 / 17

JSP Tag Files

JSP Tag Files. 4.1.0.3. Unit objectives. After completing this unit, you should be able to: Describe the use of JSP tag files Call a tag file from a JSP Pass body content, parameters and fragments to a tag file Create a tag file and use the tag file directives Package a tag file.

viveka
Download Presentation

JSP Tag Files

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSP Tag Files 4.1.0.3

  2. Unit objectives After completing this unit, you should be able to: • Describe the use of JSP tag files • Call a tag file from a JSP • Pass body content, parameters and fragments to a tag file • Create a tag file and use the tag file directives • Package a tag file

  3. Overview of Tag Files • Another way to build custom actions • Tag files are JSPs with .tag or .tagx extensions • Allows non-Java developers to create reusable custom actions • Are automatically interpreted by the JSP container when placed in the /WEB-INF/tags folder • Custom action name is the same as the tag file name • Can be further organized in sub-folders of /WEB-INF/tags • Tag files are separate files that are called from JSPs Caller JSP <info:TagFile1 …/> <info:TagFile2> …body content… </info:TagFile2> TagFile1.tag TagFile2.tag

  4. Calling a Tag File from a JSP • Resembles the invocation of a custom action • Tag files are automatically compiled into SimpleTags • More powerful than a <jsp:include> that can only accept string parameters in the request • The tag file has access to implicit objects • The tag file can be passed • Body content: content in between the begin and end tag • Parameters • Fragments: individually named body content • For example to call details.tag from a caller JSP <%@taglib tagdir="/WEB-INF/tags" prefix="info" %> <info:details loanedCopy="${item}"/>

  5. Body Content from Caller JSP • Body Content can be: scriptless, tagdependent or empty • Tag files can use <jsp:doBody/> to use the body content • Caller JSP <info:toUpper> Uppercase this text </info:toUpper> • toUpper.tag (Tag file) <%@ tag body-content="scriptless"%> <p style="text-transform:uppercase"> <jsp:doBody/> </p> Body Content

  6. Parameters from Caller JSP • Passed as attributes to the tag file • Matches an attribute, with the same name, in the tag file <info:details loanedCopy="${item}"/> • Can be a dynamic list of attributes • Handled in the tag file by a Map, thus order is not guaranteed • Can be mixed with defined attributes <info:details dyna1="first" loanedCopy="${item}" dyna2="second"/> parameter defined parameter mixed in with 2 dynamic parameters

  7. Fragments from Caller JSP • Enable the calling page to pass in named fragments of body content • <jsp:body> is used to define the main body content <info:fragmentTest> <jsp:attribute name="headerFragment"> <h1>Welcome to the IBM Library System </h1> </jsp:attribute> <jsp:attribute name="footerFragment"> System has ${library.size} books </jsp:attribute> <jsp:body> ${item.title} ${item.author} </jsp:body> </info:fragmentTest>

  8. Tag Directive in Tag File • Attribute list for the directive • display-name • body-content: empty, scriptless or tagdependent • dynamic-attributes: name of the attribute map • small-icon • large-icon • description • example • language: scripting language • import: list of imports • pageEncoding • isELIgnored: true of false • For example <%@ tag body-content="empty"%>

  9. Attribute Directive in Tag File • Maps incoming parameters to variables • Attribute list for the directive • name • required: true or false • fragment: true or false • rtexprvalue: true or false • type: type of the attribute • description • For example <%@ attribute name="loanedCopy" required="true" type="com.ibm.library.model.LoanedCopy"%> • Dynamic attribute map, is defined in the tag directive <%@tag dynamic-attributes="elements" %> <c:forEach var="element" items="${elements}" > ${element.key} : ${element.value} </c:forEach>

  10. Variable Directive in Tag File • Exposes variables to the calling page • A name can be given to the attribute or can be assigned from an attribute • if assigned from an attribute an alias needs to be defined to reference the attribute within the tag file • Attribute list for the directive • name-given or name-from attribute, with an alias • variable-class • scope: AT_BEGIN, AT_END or NESTED • description • For example • <%@ variable name-given="returnValue" scope="AT_BEGIN" %> • <c:set var="returnValue" value="5% interest"/>

  11. Implicit Objects Available in a Tag File • Collection of objects available to the tag file • request: ServletRequest or HttpServletRequest • response: ServletResponse or HttpServletResponse • jspContext: JspContext for this tag file • session: HttpSession • application: ServletContext • out: JspWriter • config: ServletConfig

  12. Example of Calling a Tag File • Tag invocation in ListItems.jsp (Caller JSP) <%@taglib tagdir="/WEB-INF/tags" prefix="info" %> <info:details loanedCopy="${item}"/> • Tag definition in details.tag (Tag file) <%@ tag body-content="empty"%> <%@ attribute name="loanedCopy" required="true" type="com.ibm.library.model.LoanedCopy"" %> <h1>Times Renewed = ${loanedCopy.timesRenewed} </h1>

  13. Tag File with Body Content and a Fragment • Tag files can be passed fragments and evaluate the separately, using <jsp:invoke fragment="fragmentName"/> • Calling JSP <info:fragmentTest> <jsp:attribute name="moreContent"> Fragment 1</jsp:attribute> <jsp:body>Body content </jsp:body> </info:fragmentTest> • fragmentTest.tag <%@ attribute name="moreContent" fragment="true"%> <jsp:invoke fragment="moreContent" /> <jsp:doBody/>

  14. Tag File Packaging • A tag file is recognized by the container if placed in /WEB-INF/tags/ folder • Tag file does not need TLD • At tag file placed in the /META-INF/tags folder of a JAR file requires a TLD • The JAR file is placed in the /WEB-INF/lib folder • Tags can also be packaged as compiled Java classes

  15. Checkpoint • Where can a tag file need to be placed to be automatically picked up by the JSP container? • Why use a tag file instead of writing a custom tag handler?

  16. Checkpoint solutions • /WEB-INF/tags • Allows non-Java developers to create reusable custom actions. Also externalizes any HTML and layout information that may creep into a tag handler class.

  17. Unit summary Having completed this unit, you should be able to: • Describe the advantages of using JSP custom tags • List the major steps in developing and using JSP custom tags • Develop basic tag handler classes to implement JSP custom tags • Create and modify taglib descriptor files • Package JSP taglib implementation classes and taglib descriptor files • Understand the uses of the JSTL • Name some of the tags included in the JSTL and their purposes • Create and call a tag file from a JSP

More Related