Using Dynamic Includes for Pages with JSF Components

Dynamically including JSP pages containing JSF components works almost the same as dynamically including regular JSP pages, but there are a couple of important issues you need to be aware of. When you dynamically include a regular JSP page, the included page is processed and the content it produces is added to the including page’s response. The same is true when you dynamically include a JSP page containing JSF components, but only for content that is not generated by JSF components. JSF component actions in the included page add components to the component tree created by the including page, and then immediately ask each component to render itself. The result is often not what you expected. Example 12-4 and 12-5 show two pages that illustrate what’s happening.

Example 12-4. Top-level page dynamically including another (main.jsp)
<%@ page contentType="text/html" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
  <body>
    <f:view>
      Template text at the top of the main page.
      <br>
      <h:outputText value="Text from a JSF component in the main page" />
      <br>
      <f:subview id="sv1">
        <jsp:include page="included.jsp" />
      </f:subview>
    </f:view>
  </body>
</html>
Example 12-5. Dynamically included page with template data (included.jsp)
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> Template text at the ...

Get JavaServer Faces now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.