[RESOLVIDO]JSF + Datable + CheckBox  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
w1l14n
JavaBaby
[Avatar]

Membro desde: 11/07/2008 09:36:13
Mensagens: 92
Offline

Bom tarde Galera.

Meu objetivo é ter uma tabela onde a primeira coluna é um checkbox.

E partir daí salvar no meu banco de dados apenas as linhas selecionadas.

Esta tabela é montada a partir de uma tabela do banco.

Eu consigo montar a tabela com o checkbox e as outras colunas.

Estou tendo problema em como vou salvar as linhas marcadas no checkbox.

Não preciso salvar a cada momento que é selecionado, o objetivo é selecionar todos e depois mandar salvar.

Agradeço a ajuda de todos.

Meu código da página está assim:

This message was edited 1 time. Last update was at 18/08/2009 14:52:33


Java Rules!
SCJP 5
SCWCD 5
asensio
HelloWorld

Membro desde: 03/07/2009 05:38:38
Mensagens: 13
Localização: São Paulo
Offline

Como você está fazendo o acesso aos dados? Hibernate?

Luis Asensio

E-mail: luis_asensio_garcia@hotmail.com
[Email] [MSN]
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

Já fiz muito isso e de várias formas.
Aparentemente pelo que você quer já está praticamente pronto, basta agora após clicar em algum botão submit, fazer um "for" na lista da tabela e verificar se o objeto foi selecionado, vci criou essa propriedade "lstParticipantes.selecionado", basta chamar o lstParticipantes.isSelecionado() e verificar se true ou false.

SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
w1l14n
JavaBaby
[Avatar]

Membro desde: 11/07/2008 09:36:13
Mensagens: 92
Offline

asensio wrote:Como você está fazendo o acesso aos dados? Hibernate?

Não estou usando Hibernate.
Via JDBC.

Javabuntu wrote:
Já fiz muito isso e de várias formas.
Aparentemente pelo que você quer já está praticamente pronto, basta agora após clicar em algum botão submit, fazer um "for" na lista da tabela e verificar se o objeto foi selecionado, vci criou essa propriedade "lstParticipantes.selecionado", basta chamar o lstParticipantes.isSelecionado() e verificar se true ou false.


O meu método consulta retorna o List, só que este list é uma atributo da minha classe Bean.

Quando vou fazer o "for" este list está nulo.

Como vou fazer para "linkar" com o datatable, visto que depois de renderizado ele se torna uma tabela comum em HTML.

Obrigado pela ajuda.

Java Rules!
SCJP 5
SCWCD 5
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

Entendi o que você fez.

Você poderia fazer o seguinte, em vez de ligar a tabela no método consulta como está agora, ligar a tabela ao atributo list do seu bean, aí antes de carregar a tabela, no link que clicou pra ir pra essa tabela, ou seja como for, primeiro você chama o método consultar, e seta o resultado na propriedade list do seu bean, ou seja, quando a tabela for lá buscar já vai ter resultados.

Ou uma maneira não muito legal, você coloca o consulta dentro do método get da sua list, algo assim:



Foram exemplo simples só para vc entender a coisa....

Quando eu fiz, eu preferi fazer tudo na mão e ter um controle maior, minha tabela era montada via código... colunas, labels.. o binding era tudo no código, no html só ficava uma linha pra fazer o binding, mas vai da necessidade.

[]'s Hewerton Crisóstomo

This message was edited 1 time. Last update was at 11/09/2009 09:29:32


SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
w1l14n
JavaBaby
[Avatar]

Membro desde: 11/07/2008 09:36:13
Mensagens: 92
Offline

Eu tenho que fazer um binding do datatable com o list do meu bean???

Desculpe se algumas dúvidas são óbvias demais... pq sou novato em JSF.

Pq tente fazer um bindinga da tabela com o meu List e deu erro.

Java Rules!
SCJP 5
SCWCD 5
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

w1l14n wrote:Eu tenho que fazer um binding do datatable com o list do meu bean???

Desculpe se algumas dúvidas são óbvias demais... pq sou novato em JSF.

Pq tente fazer um bindinga da tabela com o meu List e deu erro.


Você pode fazer assim:



No seu atributo "lista" no bean cadParticipanteBean coloque get/set...

Como eu disse acima, se você não colocar o retorno dos valores no get (preferível nunca colocar no get), você precisar fazer um set nesse atributo antes da lista ir buscar, senão ela busca e não tem nada e a lista vai ficar em branco.

Só lembrando esse seu "lista" é um atributo do tipo ListDataModel pra você ligar no value.

This message was edited 1 time. Last update was at 18/08/2009 11:36:58


SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
w1l14n
JavaBaby
[Avatar]

Membro desde: 11/07/2008 09:36:13
Mensagens: 92
Offline

Só uma dúvida.

Devo trabalhar com Bean do tipo request ou session?

Java Rules!
SCJP 5
SCWCD 5
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

w1l14n wrote:Só uma dúvida.

Devo trabalhar com Bean do tipo request ou session?


Aí depende da necessidade, mas evite ao máximo usar session, use apenas quando necessário e não por comodidade. As session pesa a aplicação.

Olha só, imagine que tenha um bean com atributo usuário que você precisa de fato estar na sessão, mas nesse bean você tem também lista, objetos do seu negócio, e mais atributos... se você colocar esse bean na sessão, tudo, tudo que está nele vai junto, as listas, objetos de negócio e tudo mais, sendo que você só precisava do atributo usuário.

O que você pode fazer nesse caso, você pode criar um bean UsuarioBean, e nele você coloca o atributo usuário que realmente precisa na sessão, e coloca este bean como session.

E cria outro bean, o qual tem as listas, objetos de negócios e etc, e coloque como scope request, e dentro deste bean você coloca uma propriedade sendo o seu UsuarioBean, e atribua ele no faces como atributo.

Concluindo, você tem um bean de sessão dentro de um bean de request, dessa forma você resolve seu problema e não coloca "lixo" na sessão, evitando assim uma perda de performance e que fácil, fácil vira uma bola de neve.

Demonstrando a idéia acima, em vez disso:


faça isso:

e

E depois colocar no faces o UsuarioBean como propriedade do MeuBeanController.

[]'s Hewerton Crisóstomo

This message was edited 1 time. Last update was at 11/09/2009 09:29:14


SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
w1l14n
JavaBaby
[Avatar]

Membro desde: 11/07/2008 09:36:13
Mensagens: 92
Offline

Javabuntu valeu ajuda.

Funcionou direitinho aqui.

Java Rules!
SCJP 5
SCWCD 5
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team