JSF selectOneMenu

Galera,
É o seguinte tenho uma formulário chamado cliente com seu respectivo tipo_usuario que podem ser de vários tipos. Criei uma página com um formulário com os campos da entidade cliente: nome, email e um selectOneMenu do bean Tipo_Usuario. Por meio de alguns exemplos na net criei uma tela para esse cadastro, e nessa tela tem uma grid que mostra o que estou cadastrando. Como consigo implementar a função de editar na mesma?

Bom dia, rapaz, você terá que fazer algo parecido com o seguinte:

<p:column headerText="#{msgs.botao_alterar}"> <p:commandButton oncomplete="modalGado.show()" action="#{gadoMB.carregarDadosAlterar}" update=":formCadastroGado:modalGado" icon="ui-icon-pencil"> <f:setPropertyActionListener target="#{gadoMB.gado}" value="#{gado}" /> </p:commandButton> </p:column>]

Percebe? A chave será o

<f:setPropertyActionListener target="#{gadoMB.gado}" value="#{gado}" />

Note que eu exibo um modal em oncomplete=“modalGado.show()” carregando o Bean recem populado.

Dentro do modal eu terei um form com um botão pro MB:

public void alterarGado() { gado.setDoencas(doencas.getTarget()); dadosSisgappeFacade.update(gado); this.listaGados = null; }

Espero que ajude.

[]'s

Antes de mais nada grato pela resposta. Peço desculpas sou bastante iniciante ainda e não ficou claro como seria essa solução. Vou postar aqui a minha página, talvez assim fique mais claro a minha dificuldade.

[quote=getAdicted]Bom dia, rapaz, você terá que fazer algo parecido com o seguinte:

<p:column headerText="#{msgs.botao_alterar}"> <p:commandButton oncomplete="modalGado.show()" action="#{gadoMB.carregarDadosAlterar}" update=":formCadastroGado:modalGado" icon="ui-icon-pencil"> <f:setPropertyActionListener target="#{gadoMB.gado}" value="#{gado}" /> </p:commandButton> </p:column>]

Percebe? A chave será o

<f:setPropertyActionListener target="#{gadoMB.gado}" value="#{gado}" />

Note que eu exibo um modal em oncomplete=“modalGado.show()” carregando o Bean recem populado.

Dentro do modal eu terei um form com um botão pro MB:

public void alterarGado() { gado.setDoencas(doencas.getTarget()); dadosSisgappeFacade.update(gado); this.listaGados = null; }

Espero que ajude.

[]'s[/quote]

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml"  
        xmlns:h="http://java.sun.com/jsf/html"  
        xmlns:f="http://java.sun.com/jsf/core"  
        xmlns:ui="http://java.sun.com/jsf/facelets">  
    <f:loadBundle basename="resources.application" var="msg"/>  
    <ui:composition template="/templates/template.xhtml">  
        <ui:define name="pageTitle">#{msg.header}</ui:define>  
        <ui:define name="pageHeader">Cadastro de Usuário</ui:define>  
        <ui:define name="body">  
            <h:form id="edicao">  
            <h:messages/>  
              
            //Preciso do inputHidden quando for  precisar EDITAR o usuario. Porém este é meu problema, pois o JSF me avisa que eu preciso de um  CONVERTER para USUARIO, quando na verdade não preciso, pois a lista que será colocada na tela será a lista da entidade TIPO_USUARIO.  
            <h:inputHidden value="#{usuarioBean.usuario}"/>           
                    <h:panelGrid columns="2">  
                    <h:outputLabel value="Login"/>  
                    <h:inputText  value="#{usuarioBean.usuario.login}" required="true"  requiredMessage="Login é um Campo Obrigitário!"/>  
                    <h:outputLabel value="Senha"/>  
                    <h:inputSecret value="#{usuarioBean.usuario.senha}" required="true" requiredMessage="Senha é um Campo Obrigitário!"/>               
                    <h:outputLabel value="Email"/>  
                    <h:inputText   value="#{usuarioBean.usuario.email}" required="true" requiredMessage="Email é um Campo Obrigitário!">  
                         <f:validator   validatorId="email"/>  
                    </h:inputText>  
           
                      
                 [size=18] [color=red]                   //NA PRIMEIRA VEZ BUSCO OS TIPO_USUARIOS. O PROBLEMA É QUANDO FOR PRECISO EDITAR, POIS A LISTA DEVERÁ JÁ VIR COMPLETA.[/color][/size]  
                                    <h:outputLabel  value="Defina o Tipo de Usuário:" />  
               
                     <h:selectOneMenu value="#{usuarioBean.tipoUsuario}">  
                    <f:selectItems value="#{usuarioBean.buscarCategorias()}"/>                                  
                    </h:selectOneMenu>  
                                 
                    </h:panelGrid>  
                    <h:commandButton action="#{usuarioBean.salvar()}" value="salvar" />  
                    <h:commandButton action="#{usuarioBean.novo()}" value="novo usuário" />  
                      
            </h:form>  
      
                       <h:form id="lista">  
                        <h:dataTable value="#{usuarioBean.todosOsUsuarios}" var="usuario"  border='2' rendered="#{not empty usuarioBean.todosOsUsuarios}">  
                        <f:facet name="header">Listagem de Usuários</f:facet>  
                        <h:column>  
                        <f:facet name="header">Login</f:facet>  
                        #{usuario.login}  
                        </h:column>  
                        <h:column>  
                        <f:facet name="header">Email</f:facet>  
                        #{usuario.email}  
                        </h:column>  
                        <h:column>  
                        <f:facet name="header">Tipo Usuário</f:facet>  
                        #{usuario.tipoUsuario.tipo}  
                        </h:column>  
                          
                        <h:column>  
                        <f:facet name="header">Data Criação</f:facet>  
                        <h:outputText value="#{usuario.data_criacao}">  
                        <f:convertDateTime dateStyle="medium"/>  
                        </h:outputText>  
                        #{usuario.data_criacao}  
                        </h:column>  
                          
                        <h:column>  
                        <f:facet name="header"> Ações</f:facet>  
                        <h:commandLink value="" action="#{usuarioBean.excluir}" onclick="if (!confirm('Deseja realmente excluir o usuário  #{usuario.login}?'))return false;">  
                        <h:graphicImage library="imagens"  name="remove-icon.png" />  
                        <f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#{usuario}" />  
                        </h:commandLink>  
                          
                        <h:commandLink>  
                        <h:graphicImage library="imagens"  name="wrench-icon.png"/>  
                        <f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#{usuario}" />  
                        </h:commandLink>  
                        </h:column>  
                        </h:dataTable>  
                        </h:form>  
        </ui:define>  
    </ui:composition>  
    </html>  

Então rapaz, eu te dei o exemplo pensando no seguinte, você tem uma pagina que conterá o botão “Editar”, por exemplo, esse botão irá te direcionar para outra pagina, ou no meu caso, abrir uma janela com os campos sendo populados pelo “Gado” :slight_smile:

Essa tag vai popular pra você o Bean que será usado no modal. Eu usei nisso ai, JSF 2 e Primefaces, beleza?

Qual a dificuldade especificamente? Uma dica ai no seu código, que eu posso te dar, é abrir uma janela ou mandar o bacana para outra pagina, inclusive, atualizar determinado componente.

Algumas referências:
http://www.guj.com.br/java/234321-jsf---preencher-form-ao-clicar-em-editar

acho que eh por ai, abraço!

[]'s

[quote=getAdicted]Então rapaz, eu te dei o exemplo pensando no seguinte, você tem uma pagina que conterá o botão “Editar”, por exemplo, esse botão irá te direcionar para outra pagina, ou no meu caso, abrir uma janela com os campos sendo populados pelo “Gado” :slight_smile:

Essa tag vai popular pra você o Bean que será usado no modal. Eu usei nisso ai, JSF 2 e Primefaces, beleza?

Qual a dificuldade especificamente? Uma dica ai no seu código, que eu posso te dar, é abrir uma janela ou mandar o bacana para outra pagina, inclusive, atualizar determinado componente.

Algumas referências:
http://www.guj.com.br/java/234321-jsf---preencher-form-ao-clicar-em-editar

acho que eh por ai, abraço!

[]'s[/quote]
Cara obrigado, realmente gostaria de continuar na mesma página e não ter que fazer outra, contudo caso não haja outra solução. A menos que chame a mesma página

Entendi, com o modal eu consegui essa flexibilidade tambem, porque o update=":formCadastroGado:modalGado", por exemplo, te permite atualizar determinado componente como Ajax.

Não é bem uma grid, olha isso aqui:

http://www.primefaces.org/showcase/ui/data/datatable/edit.xhtml

Fica bonito fazer desse jeito, mas dos dois jeitos atualiza. :slight_smile:

ed. E claro, to te mostrando com prime soh pra ilustrar.

[]'s