JSF Nested Datatable , ValueExpression

Hi, I'm working on an application which is going to use a nested datatable.
basically I generate 1 datatable which consist of 7 columns , 5 rowsItems and for each column I generate a datatable to handle the data.
I make a List from RowItems and bind it to my datatable by wrapping it in a datamodel
the rowItem class consist of 7 List for each column which will be binded to each nested datatable using ValueExpression
So now the problem is:
I couldnt get the name for each display, I'm getting error message could not find property "name" for class String.
output_name.setValueExpression("value", createValueExpression("#{displaycolVar.name}", String.class));but I can get the working unit displayed correctly
output_workingunit.setValueExpression("value", createValueExpression("#{RowItemsVar.workingtime}", String.class));can someone help me on this problem?
Thanks in advance
my code
calendar.java
package demo;
import java.util.ArrayList;
import javax.el.ValueExpression;
import javax.faces.component.UIOutput;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel;
import org.ajax4jsf.org.w3c.tidy.TagTable;
import org.richfaces.component.*;
import org.richfaces.component.html.HtmlDataTable;
import org.richfaces.component.html.HtmlColumn;
public class Calendar
     // Table Properties
     private String[] days = {"Working Time","Monday","Tuesday","Wednesday","Thursday","Freiday","Saturday","Sunday"};
     private String[] workingunit = {"8:00-8:45","8:45-9:30","9:30-10:15","10:15-11:00","11:00-11:45"};
     private int column; // number of columns
     private int row; // number of rows
     // Main List to store the values
     private ArrayList<RowItems> RowItemList;
     // Datatable backing bean Component
     private UIDataTable calendarDatatable;
     // Constructor
     public Calendar()
          // Initializing row and column
          column = 7;
          row = 5;
          // Initializing Datatable
          calendarDatatable = new HtmlDataTable();
          calendarDatatable.setVar("RowItemsVar");
          calendarDatatable.setRendered(true);
          // Creating List of RowItems
          RowItemList = new ArrayList<RowItems>();
          // Adding rows to the List
          for(int i = 0;i<row;i++)
               RowItemList.add(new RowItems(workingunit,column,i));
          // Creating creating 7 columns for each day + name column
          for(int i = 0; i <column+1; i++)
               UIColumn column = new HtmlColumn();
               UIOutput header = new HtmlOutputText();
               // Initializing column and header
               header.setValue(days[i]);
               column.setHeader(header);
               // the first column doesn't need a datatable
               if(i == 0)
                    // Display data
                    HtmlOutputText output_workingunit = new HtmlOutputText();
                    output_workingunit.setValueExpression("value", createValueExpression("#{RowItemsVar.workingtime}", String.class));
                    column.getChildren().add(output_workingunit);
                    System.out.println("\n"+output_workingunit.getValueExpression("value"));
               else      
                    // Create datatable for each column
                    UIDataTable datatable_nested = new HtmlDataTable();
                    datatable_nested.setVar("displaycolVar");               
                    datatable_nested.setRendered(true);
                    UIColumn column_for_nestedDT = new HtmlColumn();
                    // Display data
                    HtmlOutputText output_name = new HtmlOutputText();
                    output_name.setValueExpression("value", createValueExpression("#{displaycolVar.name}", String.class)); // <- it wont just find the property
                    // add outputtext for each column in nested datatable
                    column_for_nestedDT.getChildren().add(output_name);
                    // Add a column for each nested datatable
                    datatable_nested.getChildren().add(column_for_nestedDT);
                    * the expression value is correct I checked through println
                    switch(i)
                         case 1: datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col1}", String.class));
                                   break;
                         case 2:     datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col2}", String.class));
                                   break;
                         case 3:     datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col3}", String.class));
                                   break;               
                         case 4:     datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col4}", String.class));
                                   break;
                         case 5:     datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col5}", String.class));
                                   break;
                         case 6: datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col6}", String.class));
                                   break;
                         case 7:     datatable_nested.setValueExpression("value", createValueExpression("#{RowItemsVar.displaylist_col7}", String.class));
                                   break;                    
                    // Add the nested datatable to each column
                    column.getChildren().add(datatable_nested);
               // Adding each column to highest entity of datatable
               // 7 column will be added because there is 7 datatable
               calendarDatatable.getChildren().add(column);
          // Test data
          RowItemList.get(0).getDisplaylist_col1().add(new Display("danny",1,1));
          // Datamodel for the highest entity of datatable
          ListDataModel<RowItems>RowItemsDM = new ListDataModel<RowItems>();
          // Wrapp the data from ArrayList into DataModel object
          RowItemsDM.setWrappedData(RowItemList);
          // Adding datamodel to highest entity of datatable
          calendarDatatable.setValue(RowItemsDM);
     public UIDataTable getCalendarDatatable() {
          return calendarDatatable;
     public void setCalendarDatatable(UIDataTable calendarDatatable) {
          this.calendarDatatable = calendarDatatable;
// Methode to create a ValueExpression
private ValueExpression createValueExpression(String valueExpression, Class<?> valueType)
FacesContext facesContext = FacesContext.getCurrentInstance();
return facesContext.getApplication().getExpressionFactory().createValueExpression(
facesContext.getELContext(), valueExpression, valueType);

RowItems.java
package demo;
import java.util.ArrayList;
* Class to represent each column
public class RowItems
     private String workingtime;
     private int col;
     private int index;
     // List of list for each column     
     private ArrayList<Display> displaylist_col1 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col2 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col3 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col4 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col5 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col6 = new ArrayList<Display>();
     private ArrayList<Display> displaylist_col7 = new ArrayList<Display>();
     // Constructor
     public RowItems (String workingtime, int col, int index)
          this.workingtime = workingtime;
          this.col = col;
          this.index = index;
     // Getter & Setter
     public String getWorkingtime() {
          return workingtime;
     public void setWorkingtime(String workingtime) {
          this.workingtime = workingtime;
     public int getCol() {
          return col;
     public void setCol(int col) {
          this.col = col;
     public void setIndex(int index) {
          this.index = index;
     public int getIndex() {
          return index;
     public ArrayList<Display> getDisplaylist_col1() {
          return displaylist_col1;
     public void setDisplaylist_col1(ArrayList<Display> displaylist_col1) {
          this.displaylist_col1 = displaylist_col1;
     public ArrayList<Display> getDisplaylist_col2() {
          return displaylist_col2;
     public void setDisplaylist_col2(ArrayList<Display> displaylist_col2) {
          this.displaylist_col2 = displaylist_col2;
     public ArrayList<Display> getDisplaylist_col3() {
          return displaylist_col3;
     public void setDisplaylist_col3(ArrayList<Display> displaylist_col3) {
          this.displaylist_col3 = displaylist_col3;
     public ArrayList<Display> getDisplaylist_col4() {
          return displaylist_col4;
     public void setDisplaylist_col4(ArrayList<Display> displaylist_col4) {
          this.displaylist_col4 = displaylist_col4;
     public ArrayList<Display> getDisplaylist_col5() {
          return displaylist_col5;
     public void setDisplaylist_col5(ArrayList<Display> displaylist_col5) {
          this.displaylist_col5 = displaylist_col5;
     public ArrayList<Display> getDisplaylist_col6() {
          return displaylist_col6;
     public void setDisplaylist_col6(ArrayList<Display> displaylist_col6) {
          this.displaylist_col6 = displaylist_col6;
     public ArrayList<Display> getDisplaylist_col7() {
          return displaylist_col7;
     public void setDisplaylist_col7(ArrayList<Display> displaylist_col7) {
          this.displaylist_col7 = displaylist_col7;
}display.java
package demo;
public class Display
     private Person person;
     private String name;
     private int x;
     private int y;
     public Display(String name, int x, int y)
          this.person = new Person(name);
          this.name = name;
          this.x = x;
          this.y = y;
     public String getName() {
          return name;
     public void setName(String name) {
          this.name = name;
     public Person getPerson() {
          return person;
     public void setPerson(Person person) {
          this.person = person;
     public int getX() {
          return x;
     public void setX(int x) {
          this.x = x;
     public int getY() {
          return y;
     public void setY(int y) {
          this.y = y;
}

Similar Messages

  • Jsf 2 nested datatable rerender issue

    Hi All,
    I'm struggling with a nested datatable rerender issue, which I can't seem to solve.
    Here's the situation: I have this datatable which iterates over serverinstances. For each serverinstance, I then iterate over it's urls. This all works fine.
    Now I want to add a new url for that serverinstance, so under the datatable, there's an input form.
    When submitted, the url is added to the serverinstance and updated (via backing bean).
    The only problem is, that the (nested) datatable is not rerendered. I can see the update working fine, because the url is added in the database.
    If I do the same thing in a one-level, unnested datatable, it works fine. I suppose the nesting is the problem here.
    Here's the (simplified) code:
              <h:form id="appurlform">
    <h:dataTable var="serverinstance" value="#{_AddUrls.app.sortedServerInstance}" >
    <h:column>
    <h:dataTable var="_appurl" value="#{serverinstance.appUrl}">
    <h:column><h:outputText value="#{_appurl.appurl}"/></h:column>
    </h:dataTable>
    </h:column>
    </h:dataTable>
    </h:form>
    <h:form id="newappurlform" prependId="false">
    <h3><h:outputText value="New Monitored Url"/></h3>
    <table>
    <tr>
    <td>Url: </td>
    <td>
    <h:inputText id="newappurl_url" value="#{_AddUrls.newAppUrl.appurl}"/>
    </td>
    </tr>
    </table>
    <h:commandButton id="submitappurl" value="Add Url"
    onclick="jsf.ajax.request(this, event,
    {execute:'newappurl_url',
    render:'appurlform'}); return false;"
    actionListener="#{_AddUrls.addAppUrl}">
    </h:commandButton>
    </h:form>

    Hi All,
    I'm struggling with a nested datatable rerender issue, which I can't seem to solve.
    Here's the situation: I have this datatable which iterates over serverinstances. For each serverinstance, I then iterate over it's urls. This all works fine.
    Now I want to add a new url for that serverinstance, so under the datatable, there's an input form.
    When submitted, the url is added to the serverinstance and updated (via backing bean).
    The only problem is, that the (nested) datatable is not rerendered. I can see the update working fine, because the url is added in the database.
    If I do the same thing in a one-level, unnested datatable, it works fine. I suppose the nesting is the problem here.
    Here's the (simplified) code:
              <h:form id="appurlform">
    <h:dataTable var="serverinstance" value="#{_AddUrls.app.sortedServerInstance}" >
    <h:column>
    <h:dataTable var="_appurl" value="#{serverinstance.appUrl}">
    <h:column><h:outputText value="#{_appurl.appurl}"/></h:column>
    </h:dataTable>
    </h:column>
    </h:dataTable>
    </h:form>
    <h:form id="newappurlform" prependId="false">
    <h3><h:outputText value="New Monitored Url"/></h3>
    <table>
    <tr>
    <td>Url: </td>
    <td>
    <h:inputText id="newappurl_url" value="#{_AddUrls.newAppUrl.appurl}"/>
    </td>
    </tr>
    </table>
    <h:commandButton id="submitappurl" value="Add Url"
    onclick="jsf.ajax.request(this, event,
    {execute:'newappurl_url',
    render:'appurlform'}); return false;"
    actionListener="#{_AddUrls.addAppUrl}">
    </h:commandButton>
    </h:form>

  • Command link from nested datatables

    I have nested datatables that work, but I need to be able execute an actionListener from a h:commandLink and reference the item that is being clicked. The example below works except that it always returns the items in the last category. So that if the 2nd item in the first category is clicked, the 2nd item of the last category is returned. I tried binding my dataTables to UIData objects on my managed bean so that I could call getRowData() but I cannot find a way to bind the embedded h:dataTable when I don't know how many to expect.
    Here is the code (stripped down for simplicity):
    <h:dataTable value="#{bean.categories}" var="category">
        <h:column>
            <h:outputText value="#{category.name}" styleClass="txtTitle"/>
            <h:dataTable value="#{category.items}" var="item">
                <h:column>
                    <h:commandLink actionListener="#{bean.activate}">
                        <h:outputText value="#{item.name}"/>
                        <f:param name="activate" value="#{item}"/>
                    </h:commandLink>
                </h:column>
            </h:dataTable>
        </h:column>
    </h:dataTable>
    =====================================================
    public class ManagedBean {
        private List categories;
        private Item activeItem;
        public void activate(ActionEvent e) {
            UICommand command = (UICommand)e.getComponent();
            List children = command.getChildren();
            for (Iterator i = children.iterator(); i.hasNext(); ) {
                UIComponent child = (UIComponent) i.next();
                if (child instanceof UIParameter) {
                    UIParameter param = (UIParameter)child;
                    if (param.getName().equals("activate")) {
                        this.activeItem = (Item)param.getValue();
                        break;
        public List getCategories() {
            return categories;
        public void setCategories(List categories) {
                this.categories = categories;
        public Item getActiveItem() {
            return activeItem;
        public void setActiveItem(item activeItem) {
                this.activeItem = activeItem;
    }

    bump

  • Nested dataTable bug?

    I�m having a problem with nested dataTables. The complete source code is attached.
    My backing bean has properties keys and map. Keys is an array of strings. Map is a map keyed off keys with string array values.
    The faces jsp creates a table with one row per key. The key is displayed in the first column and the second column holds another table displaying the elements of the corresponding map entry.
    Various command links with nested <f:param> elements are in the cells and footers of the nested table. The parameter values reference the var property of either the inner or outer tables. All command links reference the same action listener which prints the value of the parameter to stdout.
    Clicking on outer var always works.
    Clicking on inner var yields the correct result only if you are in the last row of the outer table.
    Clicking once on any of the footer link command links causes the action listener to be invoked once for each row of the outer table.
    Have I found a bug, am I doing something wrong, or is this functionality not supported?
    Any help appreciated.
    Nick
    Backing Bean Source:
    package test;
    import java.util.*;
    import javax.faces.component.UIParameter;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
    public class NestedTableBean {
         private Map map;
         private String[] keys;
         public NestedTableBean() {
              keys = new String[]{"1", "2", "3"};
              map = new HashMap();
              map.put(keys[0], new String[]{"1a", "1b", "1c"});
              map.put(keys[1], new String[]{"2a", "2b", "2c"});
              map.put(keys[2], new String[]{"3a", "3b", "3c"});
         public Map getMap() {
              return map;
         public String[] getKeys() {
              return keys;
         public void doIt(ActionEvent actionEvent) {
              String param = null;
             List children = actionEvent.getComponent().getChildren();
             for (int i = 0; i < children.size(); i++) {
               if (children.get(i) instanceof UIParameter) {
                 UIParameter currentParam = (UIParameter) children.get(i);
                 if (currentParam.getName().equals("param") &&
                     currentParam.getValue() != null) {
                   param = currentParam.getValue().toString();
                   break;
             FacesContext context = FacesContext.getCurrentInstance();
             String id = actionEvent.getComponent().getClientId(context);
             System.out.println("In doIt(), component id: "+id+", param: "+param);
    }Faces JSP Source:
    <h:dataTable border="2" value="#{nestedTable.keys}" var="outerVar">
    <h:column>
      <h:outputText value="#{outerVar}"/>
    </h:column>
    <h:column>
      <h:dataTable  border="1" value="#{nestedTable.map[outerVar]}" var="innerVar">
       <h:column>
        <h:panelGrid columns="3">
         <h:outputText value="#{innerVar}"/>
         <h:commandLink actionListener="#{nestedTable.doIt}">
          <h:outputText value="outerVar"/>
          <f:param name="param" value="#{outerVar}"/>
         </h:commandLink>
         <h:commandLink actionListener="#{nestedTable.doIt}">
          <h:outputText value="innerVar"/>
          <f:param name="param" value="#{innerVar}"/>
         </h:commandLink>
        </h:panelGrid>
       </h:column>
       <f:facet name="footer">
        <h:panelGrid columns="2">
         <h:commandLink actionListener="#{nestedTable.doIt}">
          <h:outputText value="footer link"/>
          <f:param name="param" value="#{outerVar}"/>
         </h:commandLink>
        </h:panelGrid>
       </f:facet>
      </h:dataTable>
    </h:column>
    </h:dataTable>

    Hello,
    I have the same problem, when I use an nested dataTable the ActionEvent of the Second dataTable get always the Last Row of the First dataTable.
    The complete code :
    -=-=-=-=-=-=-=-=-=-=-=-=- PAGE.JSP -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    <h:dataTable id="categorias" var="categoria" value="#{UserBean.allCategorias}">
        <h:column>
            <h:dataTable id="items" var="item" value="#{categoria.items}">
               <f:facet name="header">
                   <h:outputText value="#{categoria.nome}" />
               </f:facet>
               <h:column>
                   <f:facet name="header">
                       <h:outputText value="Item" />
                   </f:facet>
                   <h:outputText value="#{item.nome}" />
               </h:column>
               <h:column>
                   <f:facet name="header">
                       <h:outputText value="Qtd Solicitada" />
                   </f:facet>
                    <h:outputText value="#{item.qtdSolicitada}" />
                </h:column>
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Qtd Recebida" />
                </f:facet>
                <h:outputText value="#{item.qtdEfetivada}" />
             </h:column>
              <h:column>
                  <h:panelGrid columns="2">
                      <h:inputText id="selected" size="5" />
                      <h:commandButton id="confirmar" immediate="true" image="images/confirmar_1.gif" actionListener="#{UserBean.processAction}">
                          <f:param id="itemId" name="id" value="#{item.nome}" />
                      </h:commandButton>
                  </h:panelGrid>
             </h:column>
         </h:dataTable>
    </h:column>
    </h:dataTable>-=-=-=-=-=-=-=-=-=-=-=-=- UserBean.java -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    public void processAction(ActionEvent event) throws AbortProcessingException {
        /* Find the UIParameter component by expression */
       UIParameter component = (UIParameter) event.getComponent().findComponent("itemId");
       /* param itemId - Wrong (use Debug to see) */
    }

  • JSF, recalls datatable on POST

    Hi,
    Here is the test codes:
    This is my simple managed bean:
    public class Sample {
      public String getText() {
        System.out.println("this is text");
        return "this is text";
      public String[] getData() {
        System.out.println("this is data");
        return new String[] {
          "deneme1",
          "deneme2"
      public String SampleAction() {
        return "sample";
    This is web page:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>JSP Page</title>
      </head>
      <body>
        <h:dataTable var="d" border="1" value="#{sample.data}">
          <h:column>
            <h:outputText value="#{d}" />
          </h:column>
        </h:dataTable>
        <h:form>
          <h:outputText value="#{sample.text}" />
          <h:commandButton action="#{sample.SampleAction}" value="click" />
        </h:form>
      </body>
    </html>----------------------------------
    and this is faces config:
      <navigation-rule>
        <navigation-case>
          <from-outcome>sample</from-outcome>
          <to-view-id>sample.jsf</to-view-id>
        </navigation-case>
      </navigation-rule>
      <managed-bean>
        <managed-bean-name>sample</managed-bean-name>
        <managed-bean-class>Sample</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
      </managed-bean>----------------------------------
    When we call http://localhost:8080/index.jsf. The server output is:
    this is text
    this is data
    Another word JSF calls datatable #{sample.data} and #{sample.text}.this normal.
    But when we click the button. The Server output is:
    this is data
    is this a possible bug? How may i avoid of reloading datatable content.

    A Response from MyFaces List:
    hi,
    that's a given behaviour. generally spoken: you don't know how often a component invokes your getter methods. you will find a lot of possible solutions.
    e.g. there is a myfaces sub-project which provides a solution (the view-controller provided by orchestra [1]).
    (or you use javax.faces.event.PreRenderViewEvent of jsf 2.0)
    regards,
    gerhard
    [1] http://myfaces.apache.org/orchestra/myfaces-orchestra-core15/ViewControllerAnnotations.html
    Gerhard Petracek

  • Nesting DataTable

    hello everyone
    i have problem in printing table in the following format
    student has taken many courses
    1.id name
    course1
    course2
    course2
    2.id name
    course1
    course2
    i am using nested datatable but it displays all the courses for every record
    any one could help me
    thanks in advance

    hi ramu use this code that will help u
    <t:dataTable id="Table" rowIndexVar="row"
                   value="#{Bean.list}" var="p" border="1"
                   cellpadding="1" cellspacing="1" first="0" rows="5">
                   <f:facet name="header">
                        <h:outputText value="View Details" />
                   </f:facet>
                   <t:column>
                        <f:facet name="header">
                             <t:outputText value="description" />
                        </f:facet>
                        <t:outputText value="#{p.description}" />
                   </t:column>
                   <t:column>
                        <f:facet name="header">
                             <t:outputText value="location" />
                        </f:facet>
                        <t:outputText value="#{p.location}" />
                   </t:column>
                   <t:column>
                        <tr>
                             <td colspan="2">
                                  <t:dataTable id="subTable" value="#{p.subList}" var="sub"
                                       border="2" cellpadding="2" cellspacing="2" first="0" rows="5">
                                       <t:column>
                                            <t:outputText value="Title" />
                                       </t:column>                                   
                                  </td>
                        </tr>
                   </t:column>
              </t:dataTable>
              <t:dataScroller id="scroller2" for="Table" paginator="true"
                   fastStep="2" paginatorMaxPages="5"
                   paginatorActiveColumnStyle="fontsize:10px;font-weight:bold;"
                   immediate="true">
                   <f:facet name="first">
                        <t:outputLabel value="first" />
                   </f:facet>
                   <f:facet name="last">
                        <t:outputLabel value="last" />
                   </f:facet>
                   <f:facet name="previous">
                        <t:outputLabel value="previous" />
                   </f:facet>
                   <f:facet name="next">
                        <t:outputLabel value="next" />
                   </f:facet>
              </t:dataScroller>

  • BUG JSF h:dataTable with JDBC ResultSet - only last column is updated

    I tried to create updatable h:dataTable tag with three h:inputText columns with JDBC ResultSet as data source. But what ever I did I have seceded to update only the last column in h:dataTable tag.
    My JSF page is:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1250"/>
    <title>Stevan</title>
    </head>
    <body><h:form>
    <p>
    <h:messages/>
    </p>
    <p>
    <h:dataTable value="#{tabela.people}" var = "record">
    <h:column>
    <f:facet name="header">
    <h:outputText value="PIN"/>
    </f:facet>
    <h:inputText value="#{record.PIN}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Surname"/>
    </f:facet>
    <h:inputText value="#{record.SURNAME}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Name"/>
    </f:facet>
    <h:inputText value="#{record.NAME}"/>
    </h:column>
    </h:dataTable>
    </p>
    <h:commandButton value="Submit"/>
    </h:form></body>
    </html>
    </f:view>
    My java been is:
    package com.steva;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class tabela {
    private Connection conn;
    private ResultSet resultSet;
    public tabela() throws SQLException, ClassNotFoundException {
    Statement stmt;
    Class.forName("oracle.jdbc.OracleDriver");
    conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    resultSet = stmt.executeQuery("SELECT PIN, SURNAME, NAME FROM PERSON");
    public ResultSet getPeople() {
    return resultSet;
    I have instaled “Oracle Database 10g Express Edition Release 10.2.0.1.0” – product on my PC localy. I have enabled HR schema and I have instaled and pupulated with sample data folloving table:
    CREATE TABLE "PERSON"
    (     "PIN" VARCHAR2(20) NOT NULL ENABLE,
         "SURNAME" VARCHAR2(30),
         "NAME" VARCHAR2(30),
         CONSTRAINT "PERSON_PK" PRIMARY KEY ("PIN") ENABLE
    I have:
    Windows XP SP2
    Oracle JDeveloper Studio Edition Version 10.1.3.1.0.3894
    I am not shure why this works in that way, but I think that this is a BUG
    Thanks in advance.

    Hi,
    I am sorry because of formatting but while I am entering text looks fine but in preview it is all scrambled. I was looking on the Web for similar problems and I did not find anything similar. Its very simple sample and I could not believe that the problem is in SUN JSF library. I was thinking that problem is in some ResultSet parameter or in some specific Oracle implementation of JDBC thin driver. I did not try this sample on any other platform, database or programming tool. I am new in Java and JSF and I have some experience only with JDeveloper.
    Java been(session scope):
    package com.steva;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class tabela {
    private Connection conn;
    private ResultSet resultSet;
    public tabela() throws SQLException, ClassNotFoundException {
    Statement stmt;
    Class.forName("oracle.jdbc.OracleDriver");
    conn = DriverManager.getConnection
    ("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
    stmt = conn.createStatement
    (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    resultSet = stmt.executeQuery("SELECT PIN, SURNAME, NAME FROM PERSON");
    public ResultSet getZaposleni() {
    return resultSet;
    JSF Page:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1250"/>
    <title>Stevan</title>
    </head>
    <body><h:form>
    <p>
    <h:messages/>
    </p>
    <p>
    <h:dataTable value="#{tabela.zaposleni}" var = "record">
    <h:column>
    <f:facet name="header">
    <h:outputText value="PIN"/>
    </f:facet>
    <h:inputText value="#{record.PIN}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Surname"/>
    </f:facet>
    <h:inputText value="#{record.SURNAME}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Name"/>
    </f:facet>
    <h:inputText value="#{record.NAME}"/>
    </h:column>
    </h:dataTable>
    </p>
    <h:commandButton value="Submit"/>
    </h:form></body>
    </html>
    </f:view>

  • JSF 1.2 ValueExpressions error.

    Hello guys,
    I have written a small JSF 1.2 component and I am running into all sorts of problems when using the expression langauge
    here is my simple component with two properties text and icon. I am running this on glassfish and i made sure i am using the correct jars.
    help anyone????
    //component code
    public class MyComponent extends UIComponentBase  {
    //tag code
    public class MyComponentTag extends UIComponentELTag{
      private ValueExpression text;
      private ValueExpression icon;
      //getters and setters
      //set properties method
      protected void setProperties(UIComponent component) {
        super.setProperties(component);
        MyComponent myComponent = (MyComponent)component
        if (null != text) {
          if (!text.isLiteralText()) {
            myComponent.setValueExpression("text", text);
          else {
            myComponent.setText(text.getExpressionString());
        if (null != icon) {
          if (!icon.isLiteralText()) {
            myComponent.setValueExpression("icon", icon);
          else {
            myComponent.setIcon(icon.getExpressionString());
    }the JSP page
    This is working no problem, if i want to use read only values
    <w:mycomponent text="${myBean.text}" icon="${myBean.icon}" />this is not working i am getting the following error
    <w:mycomponent text="My Component Text"  />trimmed error stack
    org.apache.jasper.JasperException: jsp.error.beans.property.conversion
      org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromPropertyEditorManager(JspRuntimeLibrary.java:890)but this is the work around, its working but it looks very very odd, i looked at the blue prints they are not using this kind of syntax.
    <w:mycomponent text="${'My Component Text'}"  />this isn't working as well.
    <w:mycomponent text="#{myBean.text}"  />

    I'm not sure what tag class is being extended: UIComponentELTag? My component tag classes all extend UIComponentTag.
    Furthermore, all of my tag attributes are defined as String. In reviewing your code, I wasn't sure why the tag attribute variables are being declared as ValueExpression type?
    I think I see what you are trying to do... and would recommend the tag class be structured as follows. If you can provide more information regarding what HTML your component is supposed to generate, I would be happy to help more.
    public class MyComponentTag extends UIComponentTag
    public static final String COMPONENT_TYPE = "MyComponent";
    String text;
    String icon;
    public void release()
    super.release();
    text = null;
    icon = null;
    protected void setProperties(UIComponent component)
    super.setProperties(component);
    if (text != null)
    if (UIComponentTag.isValueReference(text))
    FacesContext context = FacesContext.getCurrentInstance();
    Application app = context.getApplication();
    ValueBinding vb = app.createValueBinding(text);
    component.setValueBinding("text", vb);
    else
    component.getAttributes().put("text", text);
    // Something similar for icon attribute goes here.
    public String getComponentType()
    return COMPONENT_TYPE;
    public String getRendererType()
    return null;
    // Getters and setters for text and icon go here.
    }

  • Nested datatable

    Hello!
    I want to display data table with nested loops using EL.
    My backing bean is a controller for the parent hibernate entity, lets call it UserGroup (and it has User childs), then I want to display UserGroups with User list for each UserGroup.
    I like that I can access directly to domain classes using EL, like this - #{userGroupController.userGroup.user.login}.
    And I like using entites nested collections as nested loops in my datatable.
    But the problem is that collection of Users is a Set and I can't use Set in datatable.
    As I know datatable works only with Lists.
    What will be the best solution? Use <list> instead of <set> in hibernate mapping file, or leave <set> and use some converter or something else? Do you have any ideas?
    Your help and suggestions are hightly appreciated.

    Generally I would advise against changing the structure of your data model beans because of a limitation in the view technology. I.e., I would keep it as a set.
    In which case what you need is an implementation of javax.faces.model.DataModel which can handle a Set. Note that the dataTable is really looking for a DataModel; when you give it a List it uses ListDataModel automatically.
    Edited by: RaymondDeCampo on Oct 10, 2007 8:56 AM

  • Problems in JSF t:dataTable /t:dataTable

    hi
    i am using <t:dataTable> to create jsf table.In the datatable each column has one <h:commandLink>.i had action methods to each and every column.At the same Jsf page,i am having some textfields using <h:inputText>.
    My problem is when i click the datatable colume link,it goes to the same jsf page,but there is no textfields at the same page.i am not expected to same jsf page.i wants to navigate to some other jsf pages.i had one solution i.e,i used binding method for each and every Link.The problem was solved temporarly.eventhough i am having solution using binding method.it is not applicable for huge data as i have large data.so what should i do to have exact solution .At the same time,i don't need binding methods.
    Advance thanks
    rgds
    OasisDeserts

    Hi.
    J solve the problem partly and here is the problem and solution:
    Problem - JDeveloper 10.1.3 have problem in showing table when code look like this:
    <h:dataTable width="350" value="#{infoBean.popular}" var="popular_">
    <h:column>
    <f:facet name="header">
    <h:panelGroup>
    <h:commandLink action="POPULAR">
    <h:outputText value="Najpopularnije"/>
    </h:commandLink>
    </h:panelGroup>
    </f:facet>
    <h:commandLink>
    <h:outputText value="#{popular_}" converter="ProductTitle"/>
    </h:commandLink>
    </h:column>
    </h:dataTable>
    Solution - When J change code to this 'Design' tab shows the table but not the text in 'outputText'(here #{popular_}):
    <h:outputText value="#{popular_}">
    <f:converter converterId="ProductTitle"/>
    </h:outputText>
    Please try this!

  • JDeveloper Toplink + JSF Editable datatable

    Hi to all,
    is it possible to make and aditable datatable (from database) using Toplink + JSF JSP pages?
    is there a valid tutorial tha explain it?
    Thanks to all
    Emanuele

    what part are you "not getting" exactly? How to react to a button press? How to save something in the database?

  • Nested Datatables and checkbox trouble

    Hi,
    i am having a datatable with 3 rows mapping to a column in the database table..now i have another datatable inside the previous datatable mapping to another column in the database.... i am able to fetch the values from the database and populate in the 2 datatables.my first datatable has one column and it is a component label.my second datatable has 4 columns..a select many checkboxes,a component label,and 2 text fields.
    Now the problem comes when i need to save the values that are being entered in the datatable..how do i get the values of the checkbox and the textfields and update in the database.and remember i need to get the values of all the components in both the datatables and update in the database...my JSP code and the backing bean codes are as follows.......pls help me with this problem
    JSP Code:
    <h:dataTable binding="#{AttributeSelection.uiTable2}" id="dataTable2" rowClasses="form"
    value="#{AttributeSelection.arrayDataModel}" var="currentRow1">
    <h:column binding="#{AttributeSelection.column5}" id="column5">
    <h:outputText binding="#{AttributeSelection.outputText1}" id="outputText1" value=""/>
    <f:facet name="header"/>
    <h:dataTable binding="#{AttributeSelection.uiTable1}" border="1" headerClass="form_bold"
    id="dataTable1" rowClasses="form" value="#{currentRow1['attributes']}" var="currentRow">
    <h:column binding="#{AttributeSelection.column1}" id="column1">
    <h:selectBooleanCheckbox binding="#{AttributeSelection.checkbox1}" id="checkbox1" value="#{currentRow.checkbox1}"/>
    <f:facet name="header"/>
    </h:column>
    <h:column binding="#{AttributeSelection.column2}" id="column2">
    <h:outputText binding="#{AttributeSelection.outputText3}" id="outputText3" value="#{currentRow['name']}"/>
    <f:facet name="header">
    <h:outputText binding="#{AttributeSelection.outputText4}" id="outputText4"
    style="height: 23px; width: 50%" styleClass="form_bold" value="#{currentRow1['category']}"/>
    </f:facet>
    </h:column>
    <h:column binding="#{AttributeSelection.column3}" id="column3">
    <h:inputText binding="#{AttributeSelection.textField1}" id="textField1"
    style="height: 24px; width: 65%" styleClass="input" value="#{currentRow['defaultMin']}"/>
    <f:facet name="header">
    <h:outputText binding="#{AttributeSelection.outputText8}" id="outputText8" value="Min"/>
    </f:facet>
    </h:column>
    <h:column binding="#{AttributeSelection.column4}" id="column4">
    <h:inputText binding="#{AttributeSelection.textField2}" id="textField2"
    style="height: 24px; width: 65%" styleClass="input" value="#{currentRow['defaultMax']}"/>
    <f:facet name="header">
    <h:outputText binding="#{AttributeSelection.outputText9}" id="outputText9" style="" value="Max"/>
    </f:facet>
    </h:column>
    </h:dataTable>
    </h:column>
    </h:dataTable>
    Backing Bean Code:
    * AttributeSelection1.java
    * Created on January 23, 2006, 10:46 AM
    * Copyright Sidharth_Mohan
    package tpalt;
    import com.equifax.ems.tpalt.order.dao.OrderDataDAO;
    import javax.faces.*;
    import com.sun.jsfcl.app.*;
    import javax.faces.component.html.*;
    import com.sun.jsfcl.data.*;
    import java.util.ArrayList;
    import javax.faces.component.*;
    import javax.faces.model.ArrayDataModel;
    import com.equifax.ems.tpalt.order.model.OrderAttribute;
    import com.equifax.ems.tpalt.order.model.OrderCategory;
    import com.sun.faces.el.MethodBindingImpl;
    import java.util.Iterator;
    import java.util.Map;
    import javax.faces.application.Application;
    import javax.faces.context.FacesContext;
    import javax.faces.el.MethodBinding;
    public class AttributeSelection extends AbstractPageBean {
    * Bean initialization.
    // </editor-fold>
    public AttributeSelection() {
    // <editor-fold defaultstate="collapsed" desc="Creator-managed Component Initialization">
    try {
    } catch (Exception e) {
    log("AttributeSelection Initialization Failure", e);
    throw e instanceof javax.faces.FacesException ? (FacesException) e : new FacesException(e);
    // </editor-fold>
    // Additional user provided initialization code
    protected tpalt.ApplicationBean1 getApplicationBean1() {
    return (tpalt.ApplicationBean1)getBean("ApplicationBean1");
    protected tpalt.SessionBean1 getSessionBean1() {
    return (tpalt.SessionBean1)getBean("SessionBean1");
    // </editor-fold>
    * Bean cleanup.
    protected void afterRenderResponse() {
    }private int __placeholder;
    private HtmlForm form1 = new HtmlForm();
    public HtmlForm getForm1() {
    return form1;
    public void setForm1(HtmlForm hf) {
    this.form1 = hf;
    public UIData uiTable1 = new UIData();
    * Getter for property uiTable.
    * @return Value of property uiTable.
    public UIData getUiTable1() {
    return uiTable1;
    * Setter for property uiTable.
    * @param uiTable New value of property uiTable.
    public void setUiTable1(UIData uiTable1) {
    this.uiTable1 = uiTable1;
    private UIColumn column1 = new UIColumn();
    public UIColumn getColumn1() {
    return column1;
    public void setColumn1(UIColumn uic) {
    this.column1 = uic;
    private UIColumn column5 = new UIColumn();
    public UIColumn getColumn5() {
    return column5;
    public void setColumn5(UIColumn uic) {
    this.column5 = uic;
    private HtmlOutputText outputText1 = new HtmlOutputText();
    public HtmlOutputText getOutputText1() {
    return outputText1;
    public void setOutputText1(HtmlOutputText hot) {
    this.outputText1 = hot;
    public UIData uiTable2 = new UIData();
    * Getter for property uiTable.
    * @return Value of property uiTable.
    public UIData getUiTable2() {
    return uiTable2;
    * Setter for property uiTable.
    * @param uiTable New value of property uiTable.
    public void setUiTable2(UIData uiTable2) {
    this.uiTable2 = uiTable2;
    private ArrayDataModel arrayDataModel = new ArrayDataModel();
    public ArrayDataModel getArrayDataModel() {
    ArrayList orderList =new ArrayList();
    OrderDataDAO orderData =new OrderDataDAO();
    ArrayList orderCategories = new ArrayList();
    try
    orderList = (ArrayList) orderData.getAllAttributes();
    for (int i =0;i<orderList.size();i++)
    OrderAttribute or =(OrderAttribute)orderList.get(i);
    //or.setCheckbox1(true);
    String category = (String)or.getCategory();
    OrderCategory orderCategory = new OrderCategory();
    ArrayList attributesforCategory = new ArrayList();
    for (int j = i;j<orderList.size();j++){
    OrderAttribute ora =(OrderAttribute)orderList.get(j);
    if (category.equals(ora.getCategory())){
    attributesforCategory.add(ora);
    orderList.remove(j);
    j = i;
    orderCategory.setCategory(category);
    orderCategory.setAttributes(attributesforCategory);
    orderCategories.add(orderCategory);
    //dataTable2Model.setWrappedData(orderCategories);
    arrayDataModel = new ArrayDataModel(orderCategories.toArray());
    catch (Exception ex) {
    return arrayDataModel;
    public void setArrayDataModel(ArrayDataModel dtdm) {
    this.arrayDataModel = dtdm;
    private UIColumn column2 = new UIColumn();
    public UIColumn getColumn2() {
    return column2;
    public void setColumn2(UIColumn uic) {
    this.column2 = uic;
    private HtmlOutputText outputText3 = new HtmlOutputText();
    public HtmlOutputText getOutputText3() {
    return outputText3;
    public void setOutputText3(HtmlOutputText hot) {
    this.outputText3 = hot;
    private UIColumn column3 = new UIColumn();
    public UIColumn getColumn3() {
    return column3;
    public void setColumn3(UIColumn uic) {
    this.column3 = uic;
    private HtmlOutputText outputText4 = new HtmlOutputText();
    public HtmlOutputText getOutputText4() {
    return outputText4;
    public void setOutputText4(HtmlOutputText hot) {
    this.outputText4 = hot;
    private UIColumn column4 = new UIColumn();
    public UIColumn getColumn4() {
    return column4;
    public void setColumn4(UIColumn uic) {
    this.column4 = uic;
    private HtmlOutputText outputText8 = new HtmlOutputText();
    public HtmlOutputText getOutputText8() {
    return outputText8;
    public void setOutputText8(HtmlOutputText hot) {
    this.outputText8 = hot;
    private HtmlOutputText outputText9 = new HtmlOutputText();
    public HtmlOutputText getOutputText9() {
    return outputText9;
    public void setOutputText9(HtmlOutputText hot) {
    this.outputText9 = hot;
    public UIInput textField1 = new UIInput();
    public UIInput getTextField1() {
    return textField1;
    public void setTextField1(UIInput hit) {
    this.textField1 = hit;
    public UIInput textField2 = new UIInput();
    public UIInput getTextField2() {
    return textField2;
    public void setTextField2(UIInput hit) {
    this.textField2 = hit;
    public UISelectBoolean checkbox1 = new UISelectBoolean();
    public UISelectBoolean getCheckbox1() {
    return checkbox1;
    public void setCheckbox1(UISelectBoolean hsbc) {
    this.checkbox1 = hsbc;
    public String save_action() {
    try{
    java.lang.System.out.println("><<<<<<<<<<<<<<<Button Came><<<<<<<<<<<<<<<<<<>>>>>>>");
    java.lang.System.out.println("====================Welcome to the Button action======================");
    int firstIndex = uiTable2.getFirst();
    int rows = uiTable2.getRowCount();
    java.lang.System.out.println("----------------------FIRST INDEX-----------------------"+firstIndex);
    java.lang.System.out.println("----------------------ROWS-----------------------"+rows);
    ArrayList orderAttribs = orderCat.getAttributes();
    Iterator it = orderAttribs.iterator();
    while(it.hasNext())
    OrderAttribute currentAttribute = (OrderAttribute) it.next();
    java.lang.System.out.println("==================String Value===================" + currentAttribute.getCheckbox1());
    java.lang.System.out.println("==================String Value===================" + currentAttribute.getName());
    java.lang.System.out.println("==================String Value===================" + currentAttribute.getDefaultMin());
    java.lang.System.out.println("==================String Value===================" + currentAttribute.getDefaultMax());
    catch (Exception e) {
    e.printStackTrace();
    return "Test";
    private HtmlCommandButton save = new HtmlCommandButton();
    public HtmlCommandButton getSave() {
    return save;
    public void setSave(HtmlCommandButton hcb) {
    this.save = hcb;
    Please Reply me with this solution soon.............
    Thanx
    }

    Hi Tabitha,
    You have mentioned extraction of data from two database tables. Can those two tables be joined to put the data in one single table component?
    Cheers
    Giri

  • Jsf dynamic datatable

    Hi
    How can we make the columns of a datatable dynamic, I mean without knowing the numbers columns of the list to present in the datatable?
    thanks for help

    Yep, just build the h:columns inside a repeat tag that gets evaluated at the right time, like c:foreach.

  • JSF h:dataTable Example

    Can anyone please supply a link so that I can attempt to get working dataTable in my application.
    I have found that the examples given in the J2EE 1.4 Tutorial does not work for me.
    To be clear I had created a List, added a bean "Student" with a property called name
    From a jsp page I did this:
                <h:form>
                    <h:dataTable border="1" value="#{StudentBean.students}" >
                        <h:column>
                            <f:facet name="header" >
                                <h:outputText value="#{StudentBean.students.name}" />
                            </f:facet>
                        </h:column>
                    </h:dataTable>                                              
                </h:form>
            </f:view>
    import java.util.ArrayList;
    import java.util.List;
    import org.polaris.business.logic.Student;
    import org.polaris.database.DatabaseConnection;
    * @author john
    public class StudentBean extends DatabaseConnection {
        private List students = new ArrayList();
        /** Creates a new instance of StudentBean */
        public StudentBean() {
            Student student = new Student();
            student.setName("Doe, John");
            students.add(student);
            student.setName("Doe, Jane");
            students.add(student);       
        public List getStudents() {              
            return this.students;
        public void setStudents(List students) {
            this.students = students;
    }Anyhow, I do not get a list like :
    Doe, John
    Doe, Jane
    and I cannot figure out whhy???
    Any good link would be most welcome as I have spent 2 days trying to solve this simple problem.
    Thanks

    Try as follows:<f:view>
      <h:form>
        <:dataTable border="1" value="#{StudentBean.students}"  var="line">
          <h:column>
            <h:outputText value="#{line.name}" />
          </h:column>
        </h:dataTable>                                              
      </h:form>
      <h:messages/>
    </f:view>P.S. You don't need setStudents().

  • DataTable in dataTable fix details (JSF 1.1)

    I posted a message yesterday indicating that some of the problems with nested dataTables had not been fixed in the JSF 1.1 release. Since that posting, I have done some more research, and have more specific information regarding the remaining problems and a way to fix them. The remaining problems are:
    1) Values from inputText fields in the inner dataTable are ignored on submit (except for the last row of the table). The problem is that processDecodes is called on the inner table component multiple times (once per row of the outer table), and the "saved = new HashMap();" statement effectively wipes out any values that were decoded from the previous row, so that at the end of the process, the only decoded values that remain are those from the last row. My suggested fix for that problem is:
    a) to create a "boolean isOuterTable()" method on UIData that determines whether or not this table is the outermost table (i.e. go up through the parent chain and see if there are any UIData ancestors).
    b) create a "clearSaved" method on UIData as follows:
    protected void clearSaved() {
        saved = new HashMap();
    }c) create a "clearDescendants" method on UIData that goes visits all of the UIData's descendants (i.e. facets and children, and their facets and children, recursively), and calls clearSaved on any UIData components that are found
    d) in the processDecodes method for UIData, replace:
    saved = new HashMap();with
    if (isOuterTable()) {
        clearSaved();
        clearDescendants();
    }2) When a commandButton in the inner dataTable is clicked, actions are fired for all rows of the outer dataTable. This is one case of a larger problem. The implementation of getClientId in UIComponentBase uses a cached value, if the ID has been computed previously. For components within dataTables, this is a problem because these components are referenced multiple times for different rows of the outer table, and the row number of the outer table is part of the client ID. To fix this, I suggest the following (maybe overkill, but it works):
    a) Create a "clearCachedValues" method on UIData, which visits all of the UIData's descendants, and sets their clientId to null. A hack to do this is:
    descendant.setId(descendant.getId())It would be better to have a method on UIComponent for this. NOTE: I have also found that if I come across a descendant that is a UIData, I also need to set that component's "model" attribute to null, because the calculation of this model refers to that dataTable's value valueBinding, which may be defined in terms of the current row of the outer table.
    b) Add a call to clearCachedValues to the end of the setRowIndex method on UIData.
    There may be other, better ways to fix these problems, but I thought it might be helpful to describe my fixes in detail, so that whoever is responsible for fixing the reference implementation can at least have the benefit of my research.
    I would like to see a bug opened for these problems, and I would like to be able to see the descriptions of known JSF bugs. Before JSF 1.1 came out I was worried that the nested dataTables bug (C026) description (which I was unable to find) might not be complete, and that as a result, the problems with nested dataTables would not be completely fixed in JSF 1.1. As it turned out my worries were not unfounded.

    JD> 2) When a commandButton in the inner dataTable is clicked, actions
    JD> are fired for all rows of the outer dataTable. This is one case of a
    JD> larger problem. The implementation of getClientId in UIComponentBase
    JD> uses a cached value, if the ID has been computed previously. For
    JD> components within dataTables, this is a problem because these
    JD> components are referenced multiple times for different rows of the
    JD> outer table, and the row number of the outer table is part of the
    JD> client ID. To fix this, I suggest the following (maybe overkill, but
    JD> it works):
    I've fixed part 1). I've essentially done as you suggested.
    I can't reproduce part 2). I've posted the webapp where I try to do
    this at
    http://blogs.sun.com/roller/resources/edburns/jsf-nested-datatables.war
    Please put the JSF 1.1 jars in common lib, or WEB-INF/lib in this war
    and then visit
    http://host:port/jsf-nested-datatables/faces/test2.jsp
    Click on the outer buttons, you'll see that the outer listener fires
    once.
    Click on the inner buttons, you'll see that the inner listener once.
    Can you please help me reproduce this?
    Ed

Maybe you are looking for