Jsf ediÇÃo- ajuda

12 respostas
M

E aí pessoal, blz??

Estou utilizando jsf para a minha aplicação web.
Tenho uma página que cadastra, altera, consulta e exclui.

o cadastro está funcionando.

Não estou conseguindo fazer o alterar. Estou parado no seguinte ponto:
Quando clico no botão consulta, exibe uma nova página com um datable, exibindo os dados de uma bean. Ai eu clico em um registro e via javascript eu mando o id do registro. O que eu quero é que, quando o id chegar eu colocar nos inputText os valores para poder editar o registro.

Tenho outra forma sem usar o javascript? qualquer ajuda é bem vinda.

desde já agradeço.

12 Respostas

Marky.Vasconcelos

Manda o parametro via <f:param> para o bean e no bean você seta o Objeto de acordo com o id passado, se você usar o Ajax4JSF usa o support para reRenderizar a parte da página que tem o form, ou então usa a action do link para enviar para pagina novamente.

M

Tem como vc exemplificar pra mim? sem ajax…por favor…
to começando a aprender jsf a pouco tempo…Valeu.

desde já agradeço.

Marky.Vasconcelos

Algo assim
na sua DataTable

//Levando em consideração que chamarei de objeto o var da DataTable e seuBean o ManagedBean que tenha a ction editar e essaPagina.jsf já esta explicativo ^^

<h:column>
    <f:facet name="header"><h:ouputText value="Editar" /></f:facet>
    <h:commandLink value="(Editar)" actionListener="#{seuBean.editar}">
        <f:param id="idDoObjeto" action="essaPagina.jsf" value="#{objeto.id}" />
    </h:column>
</h:column>

No bean vai ter um metodo assim

private Pessoa pessoa;//O Objeto que você quer atualizar
public Pessoa getPessoa(){
    return pessoa;
}
public void editar(javax.faces.event.ActionEvent event){
   javax.faces.component.UIComponent link = event.getComponent();
   javax.faces.component.UIParameter param = (javax.faces.component.UIParameter) link.findComponent("idDoObjeto");
   Long id = ((Long) param.getValue()).longValue();
   
   //Algum metodo para carregar uma pessoa pelo id
   pessoa = carregaPessoaPeloId(id);

}
M

blz…vlw…pelas dicas, porem a tag <f:param> não está aceitando o atributo action.
Tem outro jeito de fazer?

Marky.Vasconcelos

Ops fui eu que errei mesmo

o certo

<h:column>
    <f:facet name="header"><h:ouputText value="Editar" /></f:facet>
    <h:commandLink value="(Editar)" actionListener="#{seuBean.editar}" action="essaPagina.jsf">
        <f:param id="idDoObjeto" value="#{objeto.id}" />
    </h:column>
</h:column>
M

cara naum funcionou. A página que eu preciso que receba os dados é jsp.

Marky.Vasconcelos

Como você acessa a FacesServlet? /faces/? se for coloque no lugar da suaPagina.jsf /faces/suaPagina.jsp

M

é facesservlet. mudei, mas a página não redireciona.

estruturas das páginas:

cadastro -> consulta(janela popup) -> cadastroEdicao.

eu estava tentando anteriormente redirecionar pra mesma página(cadastro), onde estão os meus botões salvar,alterar e excluir.
como eu não consegui, criei outra página(cadastroEdicao), mas sem sucesso.

desde já agradeço.

M

Tava pensando. Você tem algum tutorial ou aplicação que faça isso? pra poder ver como é?

valeu!

Marky.Vasconcelos

Procura no site da Caelum a apostila sobre JSF

Ferryman

Eai cara,

Tem um jeito melhor de fazer isso… você pode usar um DataModelList ao invés de uma list comum quando consultar os dados… e quando vc fizer um submit clicando em algum objeto que ta dentro da dataTable que foi montando iterando no DataModelList, o dataModelList tem um método que te dá o objeto selecionado na interface. Assim não precisa ficar passando ID por parametro.

ps: não esqueça de usar o managedbean na sessão para o que está querendo fazer.

[]s

Ferry

andretads

cara eu utilizo o UIData para levar as informacoes de uma pagina pra outra do jeito Q vc tah kerendo…
ce kiser entra em contato q t passo um codigo d exemplo…
com o <f:param> da muita bronca pra fazer…
o UIData eh bem melhor

Criado 24 de janeiro de 2008
Ultima resposta 24 de jan. de 2008
Respostas 12
Participantes 4