JavaServer Faces (JSF) applications require some sort of display technology, such as JavaServer Pages. One of the cool things about JSP is the ability to extend it with custom tags. A custom tag is a special XML element backed by Java code, that can be used in addition to standard JSP elements or HTML elements. A custom tag can do almost anything: display the value of variables, parse XML, conditionally display parts of a page, access a database, and so on (whether or not anyone should be doing all of these things with JSP tags is a question for another day...). Their main purpose is to keep Java code out of the pages and allow frontend developers to use simple, familiar tags instead. A group of related custom tags forms a tag library.
JSF is integrated with JSP using custom tags. All of the JSF tags we've shown so far in this book —<h:inputText>, <h:outputText>, <h:form>, <f:view>, and so on—are custom tags. JSF implementations must support JSP with custom tag libraries that provide access to all of
the standard components, renderers, validators, and converters. These libraries (included in the JSF JARs) are listed in the
table below.
JSF custom tag libraries
|
All of the tags in these libraries must be named and implemented in a specific manner. This way, your JSP-based applications are guaranteed to be portable across different JSF implementations. Most IDEs can be used with JSP.
For the most part, using JSF with JSP is just a matter of using the JSF custom tag libraries. There are, however, some nuances you should be aware of, like using JSP includes.
One of JSP's key features is the ability to integrate content from multiple JSPs into a single page. This is often used for
fun tasks like including a header or a footer. JSP supports two types of includes: dynamic and static. Dynamic includes (performed with the <jsp:include> tag or the JSTL <c:import> tag) access a resource at runtime. In this case, control is forwarded to the included JSP. The response from the included
JSP is merged with the response sent back from the calling page. When changes are made to a dynamically included page, they
automatically show up in all calling pages.
Static includes integrate the resource at translation time—when the page is morphed into Java code and compiled. The contents of the source
page are essentially copied into the calling page. Changes made to the included content generally aren't automatically noticed
by calling pages because they already have their own copy of the content. They have to be "touched" so that they can be recompiled
with the new content. (JSP 2.0's implicit includes, which can be configured in web.xml, are processed like static includes.)
JSF works with both types of JSP includes. For dynamic includes, there are two requirements:
Archived Discussions (Read only)