ComboBox duplo primefaces

26/02/2011

0

Boa tarde Pessoal...

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

Vagner Oliveira

Responder

Posts

04/03/2011

Dyego Carmo

TEntou usar os combos do prime no lugar dos combos padrao ?

Responder

08/03/2011

Vagner Oliveira

Sim, já eu tentei mas não consigo recuperar o valor do segundo combo.
Sabe como posso fazer isso.
Responder

08/03/2011

Robson Teixeira

Olá Vagner
  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

Responder

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á. 
                                               
                                               
                                               
                                           

                                           
                                               
                                               
                                               
                                           
Responder

16/03/2011

Dyego Carmo

Era para estar funcionando...

Me conte , nao aparece nenhum erro JAVASCRIPT no browser nao ?

Responder

19/03/2011

Vagner Oliveira

Não aparece nenhum erroA primeiro combo recupero normalMas o segundo não consigo recuperar
Responder

25/03/2011

Dyego Carmo

Que estranho !
Bote um js na saida do segundo combo para saber se ele esta enviando algo !
E me avise !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar