JSF: Como passar dados de um SelectManyListbox para outro?

3 respostas
B

Olá,

Estou fazendo meu TCC em JSF e encontrei uma dificuldade ao passar elementos de uma lista para outra.
Quando crio uma pagina e faço apenas isso, funciona tranquilamente. O problema é um pouco mais complexo, vou explica:

1° - Eu tenho uma classe de opções de leitura, por exemplo. Onde tenho varias opções cadastradas.
2° - Eu tenho uma classe de usuários, onde serão guardadas várias opções de leitura.
3º - Assim, eu tenho um formulario com varios campos relacionados ao usuario e tenho 2 SelectManyListbox, onde através de botões consigo transportar tais opções de leitura entre eles. Porém, este usuário ainda não está cadastrado, assim qdo clico neste botão que deveria tranferir opçoes de leitura isso não acontece. Ele chama a classe Usuario e tenta inserir um novo usuario. Não gostaria de criar o Usuario neste momento, apenas qd clicasse no botão salvar

Gostaria de alguem para me ajudar a resolver tal problema:
O codigo está abaixo

-------------------------------JSF----------------------------------------------------
<h:panelGrid columns=“2” rowClasses=“right”>
<h:outputText value=“Nome: " />
<h:inputText maxlength=“50” value=”#{CadastrarUsuario.usuario.nome}" size=“60”>
<f:validateLength minimum=“1” />
</h:inputText>
<h:outputText value=“Comentarios: " />
<h:inputTextarea value=”#{CadastrarUsuario.usuario.obs}" cols=“45” rows=“10”/>
</h:panelGrid>
<h:panelGrid columns=“3” cellspacing=“0” border=“0” width=“50%”>
<h:outputText value=“Opcões Disponíveis:”/>
<f:verbatim> </f:verbatim>
<h:outputText value=“Opções Escolhidas”/>

<h:selectManyListbox value="#{ControleListaOpcoes.opcoesDisponiveisSelecionadas}" size=“6” style=“width: 200px;”>
<f:selectItems value="#{ControleListaOpcoes.opcoesDisponiveis}" />
</h:selectManyListbox>
<h:panelGrid columns=“1”>
<h:commandButton value=">" actionListener="#{ControleListaOpcoes.moverSelecionadasParaEscolhidas}" style=“width: 50px;” />
<h:commandButton value=">>" actionListener="#{ControleListaOpcoes.moverTodosParaEscolhidas}" style=“width: 50px;” />
<h:commandButton value="<" actionListener="#{ControleListaOpcoes.moverSelecionadasParaDisponiveis}" style=“width: 50px;” />
<h:commandButton value="<<" actionListener="#{ControleListaOpcoes.moverTodosParaDisponiveis}" style=“width: 50px;” />
</h:panelGrid>
<h:selectManyListbox value="#{ControleListaOpcoes.opcoesEscolhidasSelecionadas}" size=“6” style=“width: 200px;”>
<f:selectItems id=“opcoesEscolhidas” value="#{ControleListaOpcoes.opcoesEscolhidas}" />
</h:selectManyListbox>
</h:panelGrid>
<h:commandButton id=“botaoSalvar” value=“Salvar” action="#{CadastrarUsuario.InserirUsuario}" styleClass=“botoes”/>

3 Respostas

maurenginaldo

Se eu entendi bem o seu problema, a solução já existe.
Dê uma olhada nesse link:

http://livedemo.exadel.com/richfaces-demo/richfaces/listShuttle.jsf;jsessionid=08AA0A2BA1F2231CA201E3B4B74E20B8?c=listShuttle

Abraços,

B

Acho que não fui clara. Vou explicar melhor: movimentar os itens escolhidos entre as listas eu consigo, quando existem apenas estes componentes e seus respectivos botões na tela. O que não consigo é fazer isso quando envolve a criação de um objeto de outra classe, como dei o exemplo: criar um objeto usuário (classe Usuario) que guarde os IDs das opçoes de leitura (classe Opcoes). O que acontece é que quando clico em um dos botões que movimentam as opções entre as listas, não sei porque motivo o que é ativado é a criação do objeto usuário…
Espero que tenha entendido e possa me ajudar. Obrigada!

maurenginaldo

Vc quer dizer que quando clica nos botões de movimento ele chama o método:

CadastrarUsuario.InserirUsuario

É isso?

Criado 18 de junho de 2008
Ultima resposta 20 de jun. de 2008
Respostas 3
Participantes 2