ComboBox duplo primefaces
26/02/2011
0
Estou tentando criar um combobox duplo assim..
xhtml...
<h:selectOneMenu id="city" value="#{pPRBean.city}"> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{pPRBean.cities}" /> <p:ajax update="suburbs" listener="#{pPRBean.handleCityChange}" /> </h:selectOneMenu> <h:selectOneMenu id="suburbs" value="#{pPRBean.suburb}" immediate="true"> <f:selectItem itemLabel="Selecione" itemValue=""/> <f:selectItems value="#{pPRBean.suburbs}"/> <p:ajax event="change" listener="#{pPRBean.inscrever}"/> </h:selectOneMenu>
bean....
cities.put("Pós-Graduação", "pos"); cities.put("Extensão", "ext"); Map<String, String> suburbsPos = new HashMap<String, String>(); suburbsPos.put("pos 1", "pos1"); suburbsPos.put("pos 2", "pos2"); suburbsPos.put("pos 3", "pos3"); Map<String, String> suburbsExt = new HashMap<String, String>(); suburbsExt.put("ext 1", "ext"); suburbsExt.put("ext 2", "ext2"); suburbsExt.put("ext 3", "ext3"); suburbsData.put("pos", suburbsPos); suburbsData.put("ext", suburbsExt);
te ai tudo bem funcionou mas o que estou tentando agora fazer é...., ao selecionar uma opção do segundo combobox criar um evento ou algo assim, para que seja submetido para outra pagina.
Explicação: primeiro combo seleciona pos, segundo combo seeleciona pos 1 e a paginá deve ser submetida para a página pos 1.xhtml.
Se alguem puder me ajudar grato desde já.
Vagner Oliveira
Posts
04/03/2011
Dyego Carmo
08/03/2011
Vagner Oliveira
Sabe como posso fazer isso.
08/03/2011
Robson Teixeira
usando a tag pickList do primefaces que gera 2 combos que necessica também é necessario usar a classe DualListModel que se encontra no pacote org.primefaces.model ao dar new no atributo da mesma e necessario 2 listas sendo passadas via método construtor a 1º lista é o combo da esquerda e a 2º lista é a combo da direita.
Segue 1 exemplo
import java.util.ArrayList;
import java.util.List;
import org.primefaces.model.DualListModel;
@ManagedBean
public class BeanAtividadeProjeto {
private DualListModel<ProjetoMembro> dualListModelMembro;
public List<ProjetoMembro> getMembrosSelecionados() {
return getDualListModelMembro().getTarget();
}
public void setMembrosSelecionados(List<ProjetoMembro> membros){
getDualListModelMembro().getSource().removeAll(membros);
getDualListModelMembro().setTarget(membros);
}
public DualListModel<ProjetoMembro> getDualListModelMembro() {
if (dualListModelMembro==null){
dualListModelMembro = new DualListModel<ProjetoMembro>(elaboracaoService.getProjetoMembros(getIdProjeto()), new ArrayList<ProjetoMembro>());
}
return dualListModelMembro;
}
public void setDualListModelMembro(DualListModel<ProjetoMembro> dualListModelMembro) {
this.dualListModelMembro = dualListModelMembro;
}
}
espero que isso possa ajudar a compriender melhor
att
robson Passarella
13/03/2011
Vagner Oliveira
Bom dia, ainda não estou conseguindo fazer o combo funcionar, Robson me passou a situação Model que é lista mas eu estou trabalhando com Map.Exemplo.Código xhtml.
<h:selectOneMenu id="city" value="#{pPRBean.city}"> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{pPRBean.cities}" /> <p:ajax update="suburbs" listener="#{pPRBean.handleCityChange}" /> </h:selectOneMenu> <h:selectOneMenu id="suburbs" value="#{pPRBean.suburb}"> <f:selectItem itemLabel="Selecione" itemValue=""/> <f:selectItems value="#{pPRBean.suburbs}"/> <p:ajax event="change" listener="#{pPRBean.inscrever}" /> </h:selectOneMenu>
Aqui o bean.
private String city; private String suburb; private Map<String, String> cities = new HashMap<String, String>(); private Map<String, Map<String, String>> suburbsData = new HashMap<String, Map<String, String>>(); private Map<String, String> suburbs = new HashMap<String, String>(); private DataModel dtm; public PPRBean() { cities.put("Pós-Graduação", "pos"); cities.put("Extensão", "ext"); Map<String, String> suburbsPos = new HashMap<String, String>(); suburbsPos.put("pos 1", "1"); suburbsPos.put("pos 2", "2"); suburbsPos.put("pos 3", "3"); Map<String, String> suburbsExt = new HashMap<String, String>(); suburbsExt.put("ext 1", "4"); suburbsExt.put("ext 2", "5"); suburbsExt.put("ext 3", "6"); suburbsData.put("pos", suburbsPos); suburbsData.put("ext", suburbsExt); } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getSuburb() { return suburb; } public void setSuburb(String suburb) { this.suburb = suburb; } public Map<String, String> getCities() { return cities; } public void setCities(Map<String, String> cities) { this.cities = cities; } public Map<String, Map<String, String>> getSuburbsData() { return suburbsData; } public void setSuburbsData(Map<String, Map<String, String>> suburbsData) { this.suburbsData = suburbsData; } public Map<String, String> getSuburbs() { return suburbs; } public void setSuburbs(Map<String, String> suburbs) { this.suburbs = suburbs; } public void handleCityChange() { if (city != null && !city.equals("")) { suburbs = suburbsData.get(city); } else { suburbs = new HashMap<String, String>(); } } public void inscrever(ValueChangeEvent valueChangeEvent) { JOptionPane.showMessageDialog(null, valueChangeEvent); }
No método inscrever quero recuperar o valor do segundo combo selecionado que é "cities Map<>".Também não precisa ser dessa forma se tiverem outra forma disponibilize para mim.
Se poderem me ajudar Grato desde já.
16/03/2011
Dyego Carmo
Me conte , nao aparece nenhum erro JAVASCRIPT no browser nao ?
19/03/2011
Vagner Oliveira
25/03/2011
Dyego Carmo
Bote um js na saida do segundo combo para saber se ele esta enviando algo !
E me avise !
Clique aqui para fazer login e interagir na Comunidade :)