[jboss-user] [Tomcat, HTTPD, Servlets & JSP] - Problem with valueChangeListener in inputText of a DataTable

TobiTobsen do-not-reply at jboss.com
Tue May 8 08:09:56 EDT 2007


Hello,
I write a program which should show Data in a Table and the user should be able to edit them.
The Table has to be generated dynamicaly. For simplicity I create a table with 2 cols und 2 rows (see: getColumnModel() and getTableModel() in SessionBean). When I run the application there appears a problem.
The valueChanged - Method is just called when I change the value of one of the two fields in the first column.
Why isnt the Method called when I change the value of a field of the second column?

My jsp-File looks as followed:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>


        
                Vitax Web 1.0
        
        
                <f:view>
                <h:form id="taxForm">
    <t:dataTable id="taxTable" var="row" value="#{taxTable.tableModel}">
    <t:columns value="#{taxTable.columnModel}" var="col">
    <f:facet name="header">
    <h:outputText value="#{col}" />
    </f:facet>
                                <t:inputText id="in" value="#{row[taxTable.columnModel.rowIndex]}"
                                        valueChangeListener="#{taxTable.valueChanged}" immediate="true"  
                                        onchange="submit()">
                                </t:inputText>
    </t:columns>
    </t:dataTable>
                </h:form>
                </f:view>
        


Here is the code for the taxTable SessionBean:
public class TaxTable {
        private javax.faces.model.ListDataModel tableModel;
        private javax.faces.model.ListDataModel columnModel;
        public SessionBean() {
        }

        public void valueChanged(ValueChangeEvent evt) {
                System.out.println("Old Value: "+evt.getOldValue().toString());
                System.out.println("New Value: "+evt.getNewValue().toString());
        }
       

       
        public javax.faces.model.ListDataModel getTableModel() {
                if(tableModel == null) {
                        Object[] o1 = new Object[] {"Zeile 1", new Integer(1)};
                        Object[] o2 = new Object[] {"", new Integer(2)};
                        List<Object[]> l = new ArrayList<Object[]>();
                        l.add(o1);
                        l.add(o2);
                        tableModel = new ListDataModel(l);
                }
                return tableModel;
        }

        public void setTableModel(javax.faces.model.ListDataModel tableModel) {
                this.tableModel = tableModel;
        }

        public javax.faces.model.ListDataModel getColumnModel() {
                if(columnModel == null) {
                        String[] o1 = new String[] {"Spalte1", "Spalte2"};
                        List l = new ArrayList();
                        l.add(o1[0]);
                        l.add(o1[1]);
                        columnModel = new ListDataModel(l);
                }
                return columnModel;
        }

        public void setColumnModel(javax.faces.model.ListDataModel columnModel) {
                this.columnModel = columnModel;
        }
}

I'm using myfaces1.1.4 (Tomahawk) and apache Tomcat5.5.20.
Please help me.
Thx! 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4043905#4043905

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4043905



More information about the jboss-user mailing list