Pegar id do dataTable

4 respostas
anderson.bonavides

Pessoal, to procurando uma forma de pegar o id do dataTable para alterar e excluir. Tentei com o <h:inputHiden> mas não obtive resultado.

<rich:dataTable id="listarUsuario" align="center" value="#{usuarioBean.usuarios}" var="usuario" onRowMouseOver="this.style.backgroundColor='#F8F8F8'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" rowClasses="cur"> <rich:column breakBefore="true"> <f:facet name="header">Id</f:facet> <h:outputText value="#{usuario.id}" /> </rich:column> <rich:column> <f:facet name="header">Nome</f:facet> <h:outputText value="#{usuario.nome}" /> </rich:column> <rich:column> <f:facet name="header">Alterar</f:facet> <h:commandLink action="#{usuarioBean.alterar}" value="Alterar" /> </rich:column> <rich:column> <f:facet name="header">Excluir</f:facet> <h:commandLink action="#{usuarioBean.excluir}" value="Excluir" /> </rich:column> </rich:dataTable>

Alguem tem alguma dica?

Grato!

4 Respostas

JavaFXMan

Anderson, uma forma de você fazer isso é passando o id como paramentro para o seu manager bean.

assim:

<rich:column>  
        <f:facet name="header">Excluir</f:facet>  
        <h:commandLink action="#{usuarioBean.excluir}" value="Excluir" />  
        <f:param name="id" value="#{usuario.id}" />
</rich:column>

Daí quando você fosse executar seu método excluir você pegaria esse paramentro, assim:

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
        String id = request.getParameter("id");

Esta é uma solução. Mas acredito que exista outras maneira de fazer, como por exemplo você pegar o objeto da linha que foi selecionada. Procure algo sobre DataModel.

abraços.

RobsonFagundes

veja
http://www.guj.com.br/posts/list/119119.java#644952
http://www.guj.com.br/posts/list/121733.java#658622
T+

rogeriuslima

http://www.guj.com.br/posts/list/121277.java#656567

anderson.bonavides

Obrigado a todos. A melhor solução que achei foi esta:

<rich:column> <f:facet name="header">Alterar</f:facet> <h:commandLink action="#{usuarioBean.alterar}" value="Alterar"> <f:setPropertyActionListener value="#{usuario.id}" target="#{usuarioBean.id}" /> </h:commandLink> </rich:column>

A que pega atraves de um getParameter(); acho que não é uma boa solução além de parecer com gambiarra. Não vejo o pq de usar um HttpServletRequest se está usado JSF.

Grato a todos!

Criado 7 de abril de 2009
Ultima resposta 8 de abr. de 2009
Respostas 4
Participantes 4