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”
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”
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.
ed. E claro, to te mostrando com prime soh pra ilustrar.
[]'s