Using Custom Tags - The Java EE 5 Tutorial (original) (raw)
2. Using the Tutorial Examples
3. Getting Started with Web Applications
5. JavaServer Pages Technology
Using Objects within JSP Pages
Using Application-Specific Objects
Immediate and Deferred Evaluation Syntax
Deactivating Expression Evaluation
Process of Expression Evaluation
JavaBeans Component Design Conventions
Creating and Using a JavaBeans Component
Setting JavaBeans Component Properties
Retrieving JavaBeans Component Properties
Transferring Control to Another Web Component
Setting Properties for Groups of JSP Pages
Deactivating EL Expression Evaluation
Further Information about JavaServer Pages Technology
7. JavaServer Pages Standard Tag Library
10. JavaServer Faces Technology
11. Using JavaServer Faces Technology in JSP Pages
12. Developing with JavaServer Faces Technology
13. Creating Custom UI Components
14. Configuring JavaServer Faces Applications
15. Internationalizing and Localizing Web Applications
16. Building Web Services with JAX-WS
17. Binding between XML Schema and Java Classes
19. SOAP with Attachments API for Java
21. Getting Started with Enterprise Beans
23. A Message-Driven Bean Example
24. Introduction to the Java Persistence API
25. Persistence in the Web Tier
26. Persistence in the EJB Tier
27. The Java Persistence Query Language
28. Introduction to Security in the Java EE Platform
29. Securing Java EE Applications
31. The Java Message Service API
32. Java EE Examples Using the JMS API
36. The Coffee Break Application
37. The Duke's Bank Application
Using Custom Tags
Custom tags are user-defined JSP language elements that encapsulate recurring tasks. Custom tags are distributed in a tag library, which defines a set of related custom tags and contains the objects that implement the tags.
Custom tags have the syntax
<prefix:tag attr1="value" ... attrN="value" />
or
<prefix:tag attr1="value" ... attrN="value" > body
where prefix distinguishes tags for a library, tag is the tag identifier, and attr1 ... attrN are attributes that modify the behavior of the tag.
To use a custom tag in a JSP page, you must
- Declare the tag library containing the tag
- Make the tag library implementation available to the web application
See Chapter 8, Custom Tags in JSP Pages for detailed information on the different types of tags and how to implement tags.
Declaring Tag Libraries
To declare that a JSP page will use tags defined in a tag library, you include a taglib directive in the page before any custom tag from that tag library is used. If you forget to include thetaglib directive for a tag library in a JSP page, the JSP compiler will treat any invocation of a custom tag from that library as static data and will simply insert the text of the custom tag call into the response.
<%@ taglib prefix="tt" [tagdir=/WEB-INF/tags/_dir_ | uri=_URI_ ] %>
The prefix attribute defines the prefix that distinguishes tags defined by a given tag library from those provided by other tag libraries.
If the tag library is defined with tag files (see Encapsulating Reusable Content Using Tag Files), you supply the tagdir attribute to identify the location of the files. The value of the attribute must start with /WEB-INF/tags/. A translation error will occur if the value points to a directory that doesn’t exist or if it is used in conjunction with the uri attribute.
The uri attribute refers to a URI that uniquely identifies the tag library descriptor (TLD), a document that describes the tag library (see Tag Library Descriptors).
Tag library descriptor file names must have the extension .tld. TLD files are stored in the WEB-INF directory or subdirectory of the WAR file, or in the META-INF directory or subdirectory of a tag library packaged in a JAR. You can reference a TLD directly or indirectly.
The following taglib directive directly references a TLD file name:
<%@ taglib prefix="tlt" uri="/WEB-INF/iterator.tld"%>
This taglib directive uses a short logical name to indirectly reference the TLD:
<%@ taglib prefix="tlt" uri="/tlt"%>
The iterator example defines and uses a simple iteration tag. The JSP pages use a logical name to reference the TLD.
To deploy and run the iterator application with NetBeans IDE, follow these steps:
- In NetBeans IDE, select File→Open Project.
- In the Open Project dialog, navigate to:
tut-install/javaeetutorial5/examples/web/ - Select the iterator folder.
- Select the Open as Main Project check box.
- Click Open Project.
- In the Projects tab, right-click the iterator project, and select Undeploy and Deploy.
- To run the application, open the bookstore URL http://localhost:8080/iterator.
To deploy and run the iterator application with Ant, follow these steps:
- In a terminal window, go to tut-install/javaeetutorial5/examples/web/iterator/.
- Type ant. This command will spawn any necessary compilations, copy files to the tut-install/javaeetutorial5/examples/web/iterator/build/ directory, and create a WAR file.
- Start the Application Server.
- Type ant deploy.
- To run the example, open your browser to http://localhost:8080/iterator.
To learn how to configure the example, refer to the deployment descriptor, which includes the following configurations:
- A display-name element that specifies the name that tools use to identify the application.
- Nested inside a jsp-config element is a taglib element, which provides information on a tag library used by the pages of the application. Inside the taglib element are the taglib-uri element and the taglib-location element. The taglib-uri element identifies the logical name of the tag library. The taglib-location element gives the absolute location or the absolute URI of the tag library.
The absolute URIs for the JSTL library are as follows:
- Core: http://java.sun.com/jsp/jstl/core
- XML: http://java.sun.com/jsp/jstl/xml
- Internationalization: http://java.sun.com/jsp/jstl/fmt
- SQL: http://java.sun.com/jsp/jstl/sql
- Functions: http://java.sun.com/jsp/jstl/functions
When you reference a tag library with an absolute URI that exactly matches the URI declared in the taglib element of the TLD (see Tag Library Descriptors), you do not have to add the taglib element to web.xml; the JSP container automatically locates the TLD inside the JSTL library implementation.
Including the Tag Library Implementation
In addition to declaring the tag library, you also must make the tag library implementation available to the web application. There are several ways to do this. Tag library implementations can be included in a WAR in an unpacked format: Tag files are packaged in the /WEB-INF/tag/ directory, and tag handler classes are packaged in the /WEB-INF/classes/ directory of the WAR. Tag libraries already packaged into a JAR file are included in the /WEB-INF/lib/ directory of the WAR. Finally, an application server can load a tag library into all the web applications running on the server. For example, in the Application Server, the JSTL TLDs and libraries are distributed in the archive appserv-jstl.jar in as-install/lib/. This library is automatically loaded into the classpath of all web applications running on the Application Server, so you don’t need to add it to your web application.
The iterator tag library is implemented with tag handlers. Therefore, its implementation classes are packaged in the /WEB-INF/classes/ directory.
Copyright © 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices