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