Olá Pessoal,
Tenho um h:selectOneListbox e quero fazer ele chamar um método no bean a cada click. Consegui isso fazendo um submit(), mas dai ele recarrega sempre a tela. Alguém sabe como posso fazer com que ele faça isso utilizando um reRender ou outra coisa?
Para inserir um novo registro eu consegui, mas a seleção de item não.
Segue meu código:
JSP:
<a4j:region>
<h:selectOneListbox id="listaDia" value="#{listaTeste.idDiaSemana}" onchange="submit()"
style="width: 150px; height: 100px">
<f:selectItems value="#{listaTeste.listaDiaSemana}" />
<a4j:support reRender="diaSemana" />
</h:selectOneListbox>
</a4j:region>
<br>
<h:outputText id="diaSemana" value="#{listaTeste.idDiaSemana}" />
<br>
<a4j:commandButton action="#{listaTeste.adicionarDia}" reRender="listaDia" value="Adicionar" />
</h:form>
Bean:
package teste;
import java.util.ArrayList;
import java.util.List;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;
public class ListTeste {
private Integer idDiaSemana;
private List selectItems;
public ListTeste() {
selectItems = new ArrayList();
selectItems.add(new SelectItem(1, "Domingo"));
selectItems.add(new SelectItem(2, "Segunda-Feira"));
selectItems.add(new SelectItem(3, "Ter�a-Feira"));
selectItems.add(new SelectItem(4, "Quarta-Feira"));
selectItems.add(new SelectItem(5, "Quinta-Feira"));
selectItems.add(new SelectItem(6, "Sexta-Feira"));
selectItems.add(new SelectItem(7, "Sabado"));
}
@SuppressWarnings("unchecked")
public List getListaDiaSemana() {
return selectItems;
}
public void setListaDiaSemena(DataModel dm) {
}
public Integer getIdDiaSemana() {
return idDiaSemana;
}
public void setIdDiaSemana(Integer idDiaSemana) {
this.idDiaSemana = idDiaSemana;
}
public String definirDiaSemana() {
System.out.println(idDiaSemana);
return "";
}
public String adicionarDia() {
List l = this.selectItems;
boolean podeAdd = true;
for (int i = 0; i < l.size(); i++) {
SelectItem itemSelecionado = (SelectItem) l.get(i);
if (new Integer(itemSelecionado.getValue().toString()) == 9999999) {
podeAdd = false;
}
}
if (podeAdd) {
this.selectItems = null;
l.add(0, new SelectItem(9999999, "Novo Registro"));
this.selectItems = l;
}
return "";
}
}
[]´s
Daniel