Resolvido JSF Parametro bean to view

15 respostas
V

Boa tarde à todos!

Pessoal alguém aí sabe me dizer se tem como passar parametro do backingBean para a view em JSF?

Mais informações:
Vou fazer uma opção de pesquisa no sistema que estou desenvolvendo aqui. Onde o usuário digitará o que quer pesquisar e a informação digitada irá para o backingBean, que por sua vez chamará o DAO para carregar a lista de rows do banco de acordo com o parametro passado pelo usuário. Depois de a lista preenchida pelos dados gostaria de passar como parametro essa lista para a view renderizar.

OBS: Não posso colocar a própria list como retorno do método, porque o método tem que retornar String com o endereço da página à ser carregada. Entenderam? Desculpa se eu tiver me perdido um pouco no texto aí rs …

Até!

15 Respostas

A

na sua view não vai ter um datatable?

V

Terá sim.
Mas pense o seguinte … o usuário digitará o valor que será passado ao backingBean, que irá carregar a lista de acordo com esse valor. Se o método tiver como retorno a lista. Como o servidor saberá para qual página enviar a requisição? … esse é o meu problema. Aí no que pensei foi, o backingBean retorna String com o endereço onde terá o dataTable para renderizar a list que será passada como parametro.

A

entendi… mas vc esta com problemas conceituais com jsf…
vamos pensar… como vc irá passar esse valor para o seu MB? vai existir um botão ou vai ser via ajax?

V

alves.Felipe:
entendi… mas vc esta com problemas conceituais com jsf…
vamos pensar… como vc irá passar esse valor para o seu MB? vai existir um botão ou vai ser via ajax?

Eu pensei em botão =/

A

blz… no botão vai existir um action? qual metodo vc vai chamar no seu action?
e agora no seu datatable… vai existir um value certo? oq vc vai passar no seu value do dataTable?

V

alves.Felipe:
blz… no botão vai existir um action? qual metodo vc vai chamar no seu action?
e agora no seu datatable… vai existir um value certo? oq vc vai passar no seu value do dataTable?

Sim na action do botão chamarei o método “carregaContatoPorNome(parametro digitado)” que carregará a lista nome passado como parametro. O que achei melhor era que esse método retornasse a String com o endereço da págin xhtml onde está o dataTable. Que por sua vez carregaria a lista com o parametro (list) passado pela action “carregaContatoPorNome”. Entendeu porque não posso passar como parametro a própria lista? Se eu passar a lista como parametro nesse método, como o servidor irá saber qual página carregar =/ … se tiver alguma forma melhor estou aberto a idéias =)

A

kira911:

Sim na action do botão chamarei o método “carregaContatoPorNome(parametro digitado)” que carregará a lista nome passado como parametro. O que achei melhor era que esse método retornasse a String com o endereço da págin xhtml onde está o dataTable.

cara… essa parte esta perfeita. pode fazer assim.
vc vai efetuar sua consulta e vai ter uma lista populada…
e a minha outra pergunta… o que vc vai passar no value do datatable? no mínimo vc vai ter que passar um método que retorne uma lista… certo??
pq vc nao cria uma propriedade lista no seu mb com os get e set e passa o getLista para o seu datatable?? entende?

V

Então o que queria era passar a lista como parametro pelo próprio método “carregaContatosPorNome(parametro)”.
Mas beleza, se não tem como fazer do jeito que queria, farei desse jeito que você falou mesmo. Mas se tiver alguma outra idéia melhor sou todo ouvidos =) … vlw camarada!!

A
cara.. desconheço outra forma, acredito que não tenha :D mas acho que vc esta viajando em passar lista como parametro, vai passar parametro pra onde e o datatable precisa de um metodo que retorna uma lista...
<p:dataTable id="pdtItens" var="pedidoCadastrado" value="#{pedidoMobileBean.meusPedidos}">
neste caso o meusPedidos é um método assim: [code]public List getMeusPedidos(){ return meusPedidos;}[quote] não existe passar parametro nesse caso, vc pode passar parametro no seu action do botão, mas não no value do datatable.

acho que ainda não esta muito claro para vc como o jsf funciona.

V
[quote=alves.Felipe]cara.. desconheço outra forma, acredito que não tenha :D mas acho que vc esta viajando em passar lista como parametro, vai passar parametro pra onde e o datatable precisa de um metodo que retorna uma lista...
<p:dataTable id="pdtItens" var="pedidoCadastrado" value="#{pedidoMobileBean.meusPedidos}">
neste caso o meusPedidos é um método assim: [code]public List getMeusPedidos(){ return meusPedidos;}
não existe passar parametro nesse caso, vc pode passar parametro no seu action do botão, mas não no value do datatable.

acho que ainda não esta muito claro para vc como o jsf funciona.


Sim .. meu problema está exatamente nisso. O método tem que retornar lista para a dataTable carregar ela.
Tipo ... uso o parametro digitado pelo usuário para carregar a lista correto? blz ... posso chamar o método "carregaContatosPorNome(parametro)" e coloca-lo para retornar lista. Mas se ele retornar lista como o servidor vai saber onde está o dataTable que renderizará essa lista.
E não posso mandar esse método direto para o dataTable porque o método tem que receber o parametro digitado pelo usuário antes. Aí que está meu problema. Se fosse apenas para carregar a lista sem parametros previamente digitados, blz, poderia retorna lista com esse método e mandar direto para o dataTable. Mas eu preciso do parametro para carregar essa lista. E pelo que eu sei não tem como mandar esse parametro usando o dataTable direto.

A

cara são duas coisas diferentes.
1 - o método que vc vai chamar do action do seu botão (carregaContatosPorNome(parametro))
1.1- aqui é onde vc vai popular a lista contatos, e onde retornar o caminho da página.
2 - outro método que vc vai chamar no value do datatable (por exemplo contatos)
2.1 aqui é onde vc vai devolver a lista contatos populada para o seu datatable.

V

alves.Felipe:
cara são duas coisas diferentes.
1 - o método que vc vai chamar do action do seu botão (carregaContatosPorNome(parametro))
1.1- aqui é onde vc vai popular a lista contatos, e onde retornar o caminho da página.
2 - outro método que vc vai chamar no value do datatable (por exemplo contatos)
2.1 aqui é onde vc vai devolver a lista contatos populada para o seu datatable.

Blz, farei algo do gênero. Já, já começo isso, estou fazendo outra parada aqui agora. Valeu em cara, volto a postar para avisar se deu certo ou não =)

V

alves.Felipe:
cara são duas coisas diferentes.
1 - o método que vc vai chamar do action do seu botão (carregaContatosPorNome(parametro))
1.1- aqui é onde vc vai popular a lista contatos, e onde retornar o caminho da página.
2 - outro método que vc vai chamar no value do datatable (por exemplo contatos)
2.1 aqui é onde vc vai devolver a lista contatos populada para o seu datatable.

Salve velho, resolvi a parada da seguinte forma:
No managedBean coloquei dois atributos com seus respectivos getters e setters. Um é o atributo que receberá o valor digitado pelo usuário, e o outro uma lista que receberá a lista de resultados enviada pelo DAO. E pelo método getter dessa lista que mostrei o resultado no dataTable. A parada funcionou, mas será que essa é a melhor forma para isso?
E era mais ou menos isso que você estava dizendo para fazer?

Abraço!

A

isso cara… assim mesmo!!

V

Brigadão camarada =)

Criado 6 de julho de 2012
Ultima resposta 10 de jul. de 2012
Respostas 15
Participantes 2