Olá pessoal,
Alguém sabe me dizer para que serve o f:setPropertyActionListener e se não for pedir muito um exemplo de como utiliza-lo.
Vlw
Olá pessoal,
Alguém sabe me dizer para que serve o f:setPropertyActionListener e se não for pedir muito um exemplo de como utiliza-lo.
Vlw
Bom, em linha gerais serve para você fazer uma associação entre um objeto de sua página com um objeto de seu managed bean. Um exemplo comun é quando vc está exibindo uma datatable e o usuario quer deletar ou alterar um daqules objetos, então ao invés de você enviar o id com:
<f:param name="id" value="#{pessoa.id}" />
você envia o objeto inteiro assim:
<h:dataTable value="#{pessoaController.listaPessoa}" var="pessoa">
...
<h:column>
<f:facet name="header"><h:outputText value="editar" /></f:facet>
<h:commandLink value="Editar Pessoa">
<f:setPropertyActionListener target="#{pessoaController.pessoaSelecionada}" value="#{pessoa}"/>
</h:commandLink>
</h:column>
...
</h:dataTable>
Então, quando o link Editar Pessoa for clicado o objeto daquela linha vai está no objeto pessoaSelecionada do managed bean. Então no managed bean deve ter algo como:
public class PessoaController {
...
private Pessoa pessoaSelecionada;
...
}
É isso. Espero ter ajudado.
[quote=JavaFXMan]Bom, em linha gerais serve para você fazer uma associação entre um objeto de sua página com um objeto de seu managed bean. Um exemplo comun é quando vc está exibindo uma datatable e o usuario quer deletar ou alterar um daqules objetos, então ao invés de você enviar o id com:
<f:param name="id" value="#{pessoa.id}" />
você envia o objeto inteiro assim:
<h:dataTable value="#{pessoaController.listaPessoa}" var="pessoa">
...
<h:column>
<f:facet name="header"><h:outputText value="editar" /></f:facet>
<h:commandLink value="Editar Pessoa">
<f:setPropertyActionListener target="#{pessoaController.pessoaSelecionada}" value="#{pessoa}"/>
</h:commandLink>
</h:column>
...
</h:dataTable>
Então, quando o link Editar Pessoa for clicado o objeto daquela linha vai está no objeto pessoaSelecionada do managed bean. Então no managed bean deve ter algo como:
public class PessoaController {
...
private Pessoa pessoaSelecionada;
...
}
É isso. Espero ter ajudado.[/quote]
É importante ressaltar que deve-se criar ao menos o setter desta propriedade privada. Pelo menos o meu não funcionou enquanto eu não fiz isso…
public class PessoaController {
...
private Pessoa pessoaSelecionada;
...
public void setPessoaSelecionada(Pessoa pessoaSelecionada)
{
this.pessoaSelecionada = pessoaSelecionada;
}
}
Você também pode passar o objeto utilizando o f:param!
<f:param name=“id” value="#{pessoa}" />