Dúvida: Fazendo CRUD com JSF  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
lusilva1982
Debugger
[Avatar]

Membro desde: 16/07/2006 19:41:30
Mensagens: 63
Localização: São Paulo
Offline

Olá!

Estou iniciando alguns testes em JSF, até o momento entendi boa parte de como funciona o framework, porém, pintou uma dúvida simples, veja, estou fazendo um CRUD, e na lista de um determinado cadastro denho a opção Editar para cada registro, quero fazer o simples, clicar sobre o botão e ser redirecionado ao formulário com os campos preenchidos devidamente.

Abaixo o código:



No faces-config.xml tá assim:


Alguma dica?

"A humildade vem antes da honra."
http://www.lucianosilva.com
[WWW] [MSN]
thgdias
JavaGuru

Membro desde: 23/07/2007 18:59:31
Mensagens: 223
Localização: Basil - São Paulo - SP
Offline

Já tentou usar o actionListener para chamar um método que carrega o list que vai preencher sua tela, quando clicar no botao editar?
[MSN]
lusilva1982
Debugger
[Avatar]

Membro desde: 16/07/2006 19:41:30
Mensagens: 63
Localização: São Paulo
Offline

Valeu pela dica, vou tentar!

"A humildade vem antes da honra."
http://www.lucianosilva.com
[WWW] [MSN]
lusilva1982
Debugger
[Avatar]

Membro desde: 16/07/2006 19:41:30
Mensagens: 63
Localização: São Paulo
Offline

Tentei fazer com o ActionEvent, mas pintou outra dúvida, como faço pra redirecionar para o formulário?

Veja bem, estou fazendo de maneira bem simples, não separei por camada de negócio, ou seja, o Bean que criei faz tudo! (Tosco não? Mas foi seguindo um tutorial aqui do GUJ mesmo) Pretento fazer de uma forma melhor, mas agora quero entender o mecanismo mesmo...

O ultimo método é o actionEvent.

This message was edited 1 time. Last update was at 02/06/2008 22:36:33


"A humildade vem antes da honra."
http://www.lucianosilva.com
[WWW] [MSN]
thgdias
JavaGuru

Membro desde: 23/07/2007 18:59:31
Mensagens: 223
Localização: Basil - São Paulo - SP
Offline

lusilva,

me desculpe, acho que não me fiz claro... é assim, você chama o action passando para ele o parametro "edit", que o faces vai buscar lá no faces-config.xml e no actionListener voce passa o seu metodo do bean, o action vai cuidar do redirecionamento automaticamente, enquanto o seu action listener deverá se preocupar em popular o seu list para exibição dos dados, isso tudo no jsp... ficaria assim
<h:commandButton value="Editar" action="edit" actionListener="#{Editora.selEditar}" /> .

Quanto ao retorno, na hora de salvar as alterações, você chama um action , passando por exemplo <h:commandButton value="Salvar" action="#{Editora.salvar}" /> agora o faces vai buscar o seu método que deverá retornar algum valor de algum tipo, se você retornar uma String, ele automaticamente buscará no faces-config a ação, por exemplo:

public String salvar(){
try{
String SUCCESS="SUCCESS";
String FAILURE="FAILURE";

MeuBusiness.SalvaObjeto(meuList);
return SUCCESS;
catch (Exception e){
e.printStackTrace();
return FAILURE;
}
}

e no seu faces-config:
<navigation-rule>
<display-name>editora_lista</display-name>
<from-view-id>/editora_lista.jsp</from-view-id>
<navigation-case>
<to-view-id>/editora_novo.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>edit</from-outcome>
<to-view-id>/editora_editar.jsp</to-view-id>
</navigation-case>

<from-view-id>/editora_editar.jsp</from-view-id>
<navigation-case>
<from-outcome>SUCCESS</from-outcome>
<to-view-id>/editora_sucesso.jsp</to-view-id>
</navigation-case>

</navigation-rule>

note que eu só coloquei o success, isso porque por padrão do faces, se ele não encontrar o map no faces-config.xml, ele vai ficar aonde está, logo em caso de falha, ele não encontraria o retorno FAILURE, o que faria com que ele ficasse na propria pagina "/editora_editar.jsp" aonde você poderia tratar o problema ou dar alguma mensagem, ou simplesmente redirecionar.

espero ter ajudado... qualquer coisa estamos ai!

This message was edited 1 time. Last update was at 03/06/2008 07:11:03

[MSN]
lusilva1982
Debugger
[Avatar]

Membro desde: 16/07/2006 19:41:30
Mensagens: 63
Localização: São Paulo
Offline

Eu entendi a idéia, mas como eu passo o parametro (ID) para o método que vai popular o list? Se eu não passar o ID ele não saberá qual registro eu quero editar, correto?



Esse código abaixo não funciona, tá recebendo um ActionEvent, não sei qual o type correto:



O restante da configuração tá correto!
Valeu pela paciência e ajuda.

[]`s

"A humildade vem antes da honra."
http://www.lucianosilva.com
[WWW] [MSN]
thgdias
JavaGuru

Membro desde: 23/07/2007 18:59:31
Mensagens: 223
Localização: Basil - São Paulo - SP
Offline

na verdade você já está passando o parametro no JSP quando coloca lá <{#Editora.id_editora}>
se esse campo for oculto, deverá estar dentro de um hide e se você estiver postando, dê uma olhada no myfaces tomahawk
http://myfaces.apache.org/tomahawk/tlddoc/index.html
ele tem um objeto, o savestate para fazer o postback de seus objetos...

para acessálos em sua classe, basta dar um this.id_editora e pronto, já tem acesso ao objeto.... não precisa pegá-los como em um servlet e joga-los aonde quer...

qualquer coisa posta o codigo todo para darmos uma olhada!

sem problemas
pode perguntar q nao tem erro!
[MSN]
lusilva1982
Debugger
[Avatar]

Membro desde: 16/07/2006 19:41:30
Mensagens: 63
Localização: São Paulo
Offline

Olá!

Demorou um pouco pra entender, mas aprendi como usar o ActionListener, provavelmente apareçam novas dúvidas, mas essa tá resolvidoa.
Seguindo as orientações do thgdias fiz assim:

página jsp:


o método para popular o bean:



no faces-config.xml ficou assim:



Thanks.

"A humildade vem antes da honra."
http://www.lucianosilva.com
[WWW] [MSN]
rponte
JavaEvangelist
[Avatar]

Membro desde: 18/02/2008 10:06:25
Mensagens: 413
Offline

Acho que está faltando você entender como funciona a comunicação com JSF,
http://balusc.blogspot.com/2006/06/communication-in-jsf.html

Abraços e boa sorte.

Rafael Ponte
http://www.rponte.com.br/
[WWW]
sudeval
JavaGuru
[Avatar]

Membro desde: 08/06/2005 09:48:30
Mensagens: 213
Localização: Fortaleza/CE
Offline

aproveitando o topico, fazendo algumas coisas com JSF acabei me enrolando com um CRUD
consigo criar,listar e exibir mais quando tento alterar, nao tenho sucesso.

faco algo do tipo
meu xhtml de listagem de mercadorias (mercadoriaList.xhtml) , vai ter algo como :


no meu backbean tenha algo como:


apos fazer a execução do obterMercadoria os dados são exibidos corretamente no meu xhtml de mercadoria, mas ao tentar editar e salvar as alterações eu não consigo, não me é retornado nenhum erro, mais ao fazer um debug vi que as informações do tipo nome e codigo estão no objeto mercadoria mas o id está como null (por isso não consigo fazer merge).



----
o meu mercadoria.xhtml eh algo basico, somente pro teste do crud mesmo, algo como


na verdade estou em duvida se o problema eh algo que estou fazendo de errado no JSF ou com relacao a JPA.
se alguem tiver alguma sugestão, será bem vinda.

t+

This message was edited 1 time. Last update was at 01/09/2008 21:06:54

sudeval
JavaGuru
[Avatar]

Membro desde: 08/06/2005 09:48:30
Mensagens: 213
Localização: Fortaleza/CE
Offline

alguem ja passou por isso ? acho que deve ser algo comum entre vcs, qualquer dica eh bem vinda !
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team