webtier@glassfish.java.net

Ajax bug?

From: <webtier_at_javadesktop.org>
Date: Wed, 30 Sep 2009 00:47:10 PDT

Hi,

I have an ajax problem. I have narrowed down my production code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
</h:head>

<h:body>

        <h:form id="form">
        
                <h:dataTable width="100%" id="dataTable" rowClasses="tr1,tr2" binding="#{testBean.dataTable}" value="#{testBean.numbers}" var="number">
                </h:dataTable>

        </h:form>
        
</h:body>

</html>

package beszterv.view;



import java.util.ArrayList;

import java.util.List;



import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import javax.faces.component.UIColumn;

import javax.faces.component.UIData;

import javax.faces.component.html.HtmlCommandButton;

import javax.faces.component.html.HtmlOutputText;



import beszterv.util.JSFUtils;



@ManagedBean

@SessionScoped

public class TestBean {

        

        private UIData dataTable;

        private List<String> numbers = new ArrayList<String>();

        

        public TestBean() {

                this.dataTable = new UIData();

        }



        public String addNewNumber() {

                numbers.add("four");

                return null;

        }

        

        public UIData getDataTable() {

                return dataTable;

        }





        public void setDataTable(UIData dataTable) {

                this.dataTable = dataTable;

        }



        public List<String> getNumbers() {

                return numbers;

        }



        public void setNumbers(List<String> numbers) {

                this.numbers = numbers;

        }



        private UIData populateDataTable(UIData dataTable) {

                UIColumn col = new UIColumn();

                dataTable.getChildren().add(col);

                

                HtmlOutputText sequenceOutput = new HtmlOutputText();

                sequenceOutput.setValueExpression("value", JSFUtils.createValueExpression("#{number}", String.class));

                col.getChildren().add(sequenceOutput);



                

                col = new UIColumn();

                dataTable.getChildren().add(col);



                HtmlCommandButton bt = new HtmlCommandButton();

                bt.setId("btNewNumber");

                bt.setActionExpression(JSFUtils.createMethodExpression("#{testBean.addNewNumber}", String.class));

                bt.addActionListener(new BeszTervEditListener());

                bt.setValue("Add");

                JSFUtils.addAjaxBehaviour(bt, "click", "@all", "@all");



                col.getChildren().add(bt);

                return dataTable;

        }

        

        @PostConstruct

        public void init() {

                numbers.add("one");

                numbers.add("two");

                numbers.add("three");

                this.dataTable = populateDataTable(dataTable);

        }

        



}


When i press the button, the action method don't get invoked. Why is that?
Thanks
[Message sent by forum member 'gabox01' (beres.gabor_at_gmail.com)]

http://forums.java.net/jive/thread.jspa?messageID=366289