JSF Components in Table Cells

   

To this point, we've used only output components in table columns, but you can place any JSF component in a table column. Figure 5-4 shows an application that uses a variety of components in a table.

Figure 5-4. JSF Components in Table Cells

graphics/05fig04.jpg


h:dataTable iterates over data, so the table shown in Figure 5-4 provides a list of integers for that purpose; the current integer populates components in the Number, Textfields, Buttons, and Menu columns.

Components in a table are no different from components outside tables; you can manipulate them in any manner you desire, including conditional rendering with the rendered attribute, handling events, and the like.

The directory structure for the application shown in Figure 5-4 is shown in Figure 5-5. The JSF page, faces configuration file and property resource bundle are given in Listing 5-8 through Listing 5-10.

Listing 5-8. components/index.jsp
  1. <html>  2.    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>  3.    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>  4.    <f:view>  5.       <head>  6.          <link href="styles.css" rel="stylesheet" type="text/css"/>  7.          <title>  8.             <f:loadBundle basename="com.corejsf.messages" var="msgs"/>  9.             <h:outputText value="#{msgs.windowTitle}"/> 10.          </title> 11.       </head> 12.       <body> 13.          <h:form> 14.             <h:dataTable value="#{numberList}" var="number"> 15.                <h:column> 16.                   <f:facet name="header"> 17.                      <h:outputText value="#{msgs.numberHeader}"/> 18.                   </f:facet> 19.                   <h:outputText value="#{number}"/> 20.                </h:column> 21.                <h:column> 22.                   <f:facet name="header"> 23.                      <h:outputText value="#{msgs.textfieldHeader}"/> 24.                   </f:facet> 25.                   <h:inputText value="#{number}" size="3"/> 26.                </h:column> 27.                <h:column> 28.                   <f:facet name="header"> 29.                      <h:outputText value="#{msgs.buttonHeader}"/> 30.                   </f:facet> 31.                   <h:commandButton value="#{number}"/> 32.                </h:column> 33.                <h:column> 34.                   <f:facet name="header"> 35.                      <h:outputText value="#{msgs.checkboxHeader}"/> 36.                   </f:facet> 37.                   <h:selectBooleanCheckbox value="false"/> 38.                </h:column> 39.                <h:column> 40.                   <f:facet name="header"> 41.                      <h:outputText value="#{msgs.linkHeader}"/> 42.                   </f:facet> 43.                   <h:commandLink> 44.                      <h:outputText value="#{number}"/> 45.                   </h:commandLink> 46.                </h:column> 47.                <h:column> 48.                   <f:facet name="header"> 49.                      <h:outputText value="#{msgs.graphicHeader}"/> 50.                   </f:facet> 51.                   <h:graphicImage value="images/dice#{number}.gif" 52.                      style="border: 0px"/> 53.                </h:column> 54.                <h:column> 55.                   <f:facet name="header"> 56.                      <h:outputText value="#{msgs.menuHeader}"/> 57.                   </f:facet> 58.                   <h:selectOneMenu> 59.                      <f:selectItem itemLabel="#{number}" itemValue="#{number}"/> 60.                   </h:selectOneMenu> 61.                </h:column> 62.                <h:column> 63.                   <f:facet name="header"> 64.                      <h:outputText value="#{msgs.radioHeader}"/> 65.                   </f:facet> 66.                   <h:selectOneRadio layout="LINE_DIRECTION" value="nextMonth"> 67.                      <f:selectItem itemValue="yes" itemLabel="yes"/> 68.                      <f:selectItem itemValue="no" itemLabel="no" /> 69.                   </h:selectOneRadio> 70.                </h:column> 71.                <h:column> 72.                   <f:facet name="header"> 73.                      <h:outputText value="#{msgs.listboxHeader}"/> 74.                   </f:facet> 75.                   <h:selectOneListbox size="3"> 76.                      <f:selectItem itemValue="yes" itemLabel="yes"/> 77.                      <f:selectItem itemValue="maybe" itemLabel="maybe"/> 78.                      <f:selectItem itemValue="no" itemLabel="no" /> 79.                      <f:selectItem itemValue="ok" itemLabel="ok" /> 80.                   </h:selectOneListbox> 81.                </h:column> 82.             </h:dataTable> 83.          </h:form> 84.       </body> 85.    </f:view> 86. </html> 

Listing 5-9. components/WEB-INF/faces-config.xml
  1. <?xml version="1.0"?>  2.  3. <!DOCTYPE faces-config PUBLIC  4.   "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"  5.   "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">  6.  7. <faces-config>  8.    <managed-bean>  9.       <managed-bean-name>numberList</managed-bean-name> 10.       <managed-bean-class>java.util.ArrayList</managed-bean-class> 11.       <managed-bean-scope>session</managed-bean-scope> 12.       <list-entries> 13.          <value>1</value> 14.          <value>2</value> 15.          <value>3</value> 16.          <value>4</value> 17.          <value>5</value> 18.       </list-entries> 19.    </managed-bean> 20. </faces-config> 

Listing 5-10. components/WEB-INF/classes/com/corejsf/messages.properties
  1. windowTitle=Using JSF Components in Tables  2.  3. numberHeader=Number  4. textfieldHeader=Textfields  5. buttonHeader=Buttons  6. checkboxHeader=Checkboxes  7. linkHeader=Links  8. menuHeader=Menu  9. graphicHeader=Graphics 10. radioHeader=Radio Buttons 11. listboxHeader=List Boxes 

Figure 5-5. The Directory Structure for the Components Example

graphics/05fig05.jpg




core JavaServer Faces
Core JavaServer Faces
ISBN: 0131463055
EAN: 2147483647
Year: 2003
Pages: 121

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net