a4j and selectOneMenu's valueChangeListener
trajber Nov 7, 2007 8:11 AMHi all,
I'm just building an simple application that loads some items inside a selectOneMenu when a onblur event occurs in a inputText.So far everything is going well.
The problem starts when a try to add a valueChangeListener to the selectOneMenu and also add a a4j support linked to onChange event.
When I reproduce the onblur event for the second time OR when I change the combo value an java.util.NoSuchElementException is throwed.
Can you help me ?
Thats the cursed code ;-)
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <!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=US-ASCII"> <title>Insert title here</title> </head> <body> <f:view> <h:form id="form"> <rich:panel style="border:none" id="parent"> <h:inputText value="#{testeForm.inputText}"> <a4j:support event="onblur" actionListener="#{testeForm.loadItems}" reRender="parent"> </a4j:support> </h:inputText> <h:selectOneMenu valueChangeListener="#{testeForm.change}" value="#{testeForm.id}"> <a4j:support event="onchange"></a4j:support> <f:selectItems value="#{testeForm.items}" /> </h:selectOneMenu> </rich:panel> </h:form> </f:view> </body> </html>
public class TesteForm { private List<SelectItem> items; private String inputText; private Integer id; @PostConstruct public void init(){ items = new ArrayList<SelectItem>(); } public List<SelectItem> getItems() { return items; } public void setItems(List<SelectItem> items) { this.items = items; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getInputText() { return inputText; } public void setInputText(String inputText) { this.inputText = inputText; } public void loadItems(ActionEvent event) { for (int x = 0; x < 5; x++){ items.add(new SelectItem(x,x+"")); } } public void change(ValueChangeEvent changeEvent) { System.out.println("HELLO"); } }