® IBM Software Group © 2007 IBM Corporation JSP Tag Files
2 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 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 Unit objectives
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 …body content… TagFile2.tag TagFile1.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 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
5 Body Content from Caller JSP Body Content can be: scriptless, tagdependent or empty Tag files can use to use the body content Caller JSP Uppercase this text toUpper.tag (Tag file) 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 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"/> defined parameter mixed in with 2 dynamic parameters parameter
7 Fragments from Caller JSP Enable the calling page to pass in named fragments of body content is used to define the main body content Welcome to the IBM Library System System has ${library.size} books ${item.title} ${item.author}
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
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 ${element.key} : ${element.value}
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
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) Tag definition in details.tag (Tag file) attribute name="loanedCopy" required="true" type="com.ibm.library.model.LoanedCopy"" %> Times Renewed = ${loanedCopy.timesRenewed}
13 Tag File with Body Content and a Fragment Tag files can be passed fragments and evaluate the separately, using Calling JSP Fragment 1 Body content fragmentTest.tag
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 1.Where can a tag file need to be placed to be automatically picked up by the JSP container? 2.Why use a tag file instead of writing a custom tag handler?
16 Checkpoint solutions 1./WEB-INF/tags 2.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 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 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 Unit summary