ajaxKeys example
svenhassel Sep 11, 2009 5:47 AMThis sample code doesn't work for me.
Could somebody help me to fix it? my try's weren't successful...
<table> <a4j:repeat value="#{repeatBean.numbers}" var="rec" rowKeyVar="rowIndex" ajaxKeys="#{repeatBean.rowsToUpdate}"> <tr> <td width="20px"> <h:outputText id="num" value="#{rec.number}" /> </td> <td> <a4j:commandLink value="-" reRender="num" actionListener="#{repeatBean.decrease}"> <a4j:actionparam name="rowIndex" value="#{rowIndex}" assignTo="#{repeatBean.updatedRow}" /> </a4j:commandLink> / <a4j:commandLink value="+" reRender="num" actionListener="#{repeatBean.increase}"> <a4j:actionparam name="rowIndex" value="#{rowIndex}" assignTo="#{repeatBean.updatedRow}" /> </a4j:commandLink> </td> </tr> </a4j:repeat> </table> import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.annotation.PostConstruct; import javax.faces.event.ActionEvent; public class RepeatBean { private List<NumberBean> numbers; private Set<Integer> rowsToUpdate; private Integer updatedRow; @PostConstruct public void init() { numbers = new ArrayList<NumberBean>(); numbers.add(new NumberBean()); numbers.add(new NumberBean()); numbers.add(new NumberBean()); numbers.add(new NumberBean()); numbers.add(new NumberBean()); rowsToUpdate = new HashSet<Integer>(); updatedRow = 0; } public List<NumberBean> getNumbers() { return numbers; } public void setNumbers(List<NumberBean> numbers) { this.numbers = numbers; } public Set<Integer> getRowsToUpdate() { return rowsToUpdate; } public Integer getUpdatedRow() { return updatedRow; } public void setUpdatedRow(Integer updatedRow) { this.updatedRow = updatedRow; } public void increase(ActionEvent event) { rowsToUpdate.clear(); numbers.get(updatedRow).increase(); rowsToUpdate.add(updatedRow); } public void decrease(ActionEvent event) { rowsToUpdate.clear(); numbers.get(updatedRow).decrease(); rowsToUpdate.add(updatedRow); } } public class NumberBean { private Integer number; public NumberBean() { number = 10; } public Integer getNumber() { return number; } public void setNumber(Integer number) { this.number = number; } public void increase() { ++number; } public void decrease() { --number; } }