Inserir dado no banco usando inplace do PrimeFaces
2 respostas
ArianeRebellato
Boa noite!
Não estou conseguindo fazer com que o dado selecionado usando o inplace seja persistido no banco…já tentei de tds as formas…
São duas combos de estados e cidades usando javascript e eu não sei como usar as duas coisas ao mesmo tempo… ;/
Se alguém puder me dar uma luz eu agradeço!
A combo de estados:
<tdalign="right"><h:outputTextvalue="Estado"/></td><tdalign="left"> <p:inplacelabel="Clique duas vezes"effectSpeed="fast"event="dblclick"><h:selectOneMenuid="estado"required="true"requiredMessage="Campo Estado é obrigatório"value="#{usuarioBeans.user.estado}"><selectid="estado"name="estado"></select></h:selectOneMenu></p:inplace></td>
Eu sei que está uma bagunça…tem duas combos…uma vazia e a outra popula com os estados…mas quando vou gravar é como se eu não tivesse escolhido nenhum valor pra ela. Eu queria que o <h:selectOneMenu recebesse e persistisse os valores…e eu preciso usar o inplace…
Não consegui fazer com que o dado seja persistido ainda…desisti do JS mas mesmo assim continuo perdida…se alguém por favor puder me ajudar, eu gostaria de saber como fazer para que o item escolhido no <f:selectItem> da combo dos estados seja inserido no banco.
Eu dei um milhão de voltas e acho não cheguei a lugar nenhum na minha classe UsuarioBean.
A minha base é super simples. Declarei estado e cidade como um atributo de usuário e ambos são character varying. Existe apenas a tabela usuarios. Da combo de cidades está gravando. Segue o código:
packageBeans;importjava.awt.event.ActionEvent;importjava.util.ArrayList;importjava.util.List;importjava.util.TimeZone;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.context.FacesContext;importjavax.persistence.EntityManager;importjavax.persistence.Id;importjavax.persistence.Query;importmodelo.Usuario;importutil.DAO;importutil.HibernateUtil;@ManagedBean//gera os new@SessionScoped//@ViewScopedpublicclassUsuarioBeans{EntityManagermanager=HibernateUtil.getManager();privateUsuariouser=newUsuario();privateDAOdao=newDAO();//SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");privateTimeZonetz=TimeZone.getTimeZone("America/Sao_Paulo");@IdprivateLongid;List<Usuario>lista;privateStringnome;ArrayList<String>cidades;privateStringestados;privateStringestadoSelecionado="";publicStringgetEstados(){if(estadoSelecionado.equals("RS")){estados="Rio Grande do Sul";}elseif(estadoSelecionado.equals("SC")){estados="Santa Catarina";}elseif(estadoSelecionado.equals("PR")){estados="Paraná";}elseif(estadoSelecionado.equals("SP")){estados="São Paulo";}elseif(estadoSelecionado.equals("RJ")){estados="Rio de Janeiro";}returnestados;}publicvoidsetEstados(Stringestados){this.estados=estados;}publicArrayList<String>getCidades(){returncidades;}publicvoidsetCidades(ArrayList<String>cidades){this.cidades=cidades;}publicStringgetEstadoSelecionado(){returnestadoSelecionado;}publicvoidsetEstadoSelecionado(StringestadoSelecionado){this.estadoSelecionado=estadoSelecionado;estadoSelecionado=user.getEstado();}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicTimeZonegetTz(){returntz;}publicvoidsetTz(TimeZonetz){this.tz=tz;}publicUsuariogetUser(){returnuser;}publicvoidsetUser(Usuariouser){this.user=user;}publicvoidsetId(Longid){this.id=id;if(id!=null){user=manager.find(Usuario.class,id);}}publicLonggetId(){returnid;}publicvoidnewInstance(){user=newUsuario();}publicvoidinserirUsuario(){manager.getTransaction().begin();manager.persist(user);manager.getTransaction().commit();newInstance();}publicvoidcarregarCidades(){cidades=newArrayList<String>();if(estadoSelecionado.equals("RS")){cidades.add("Passo Fundo");cidades.add("Marau");cidades.add("Porto Alegre");}elseif(estadoSelecionado.equals("SC")){cidades.add("Florianópolis");cidades.add("Bombas");cidades.add("Blumenau");}elseif(estadoSelecionado.equals("PR")){cidades.add("Curitiba");cidades.add("Paranaguá");cidades.add("Cascavel");}elseif(estadoSelecionado.equals("SP")){cidades.add("São Paulo");cidades.add("Americana");cidades.add("Campinas");}elseif(estadoSelecionado.equals("RJ")){cidades.add("Rio de Janeiro");cidades.add("Angra dos Reis");cidades.add("Parati");}}}
inserir.xhtml
<tdalign="right"><h:outputTextvalue="Estado"></h:outputText></td><td> <p:inplacelabel="Clique duas vezes"effectSpeed="fast"event="dblclick"><h:selectOneMenuvalue="#{usuarioBeans.estadoSelecionado}"valueChangeListener="#{usuarioBeans.user.estado}"><f:selectItemitemValue="RS"itemLabel="Rio Grande do Sul"></f:selectItem><f:selectItemitemValue="SC"itemLabel="Santa Catarina"></f:selectItem><f:selectItemitemValue="PR"itemLabel="Paraná"></f:selectItem><f:selectItemitemValue="SP"itemLabel="São Paulo"></f:selectItem><f:selectItemitemValue="RJ"itemLabel="Rio de Janeiro"></f:selectItem><f:ajaxevent="change"render="cidades"listener="#{usuarioBeans.carregarCidades}"/></h:selectOneMenu></p:inplace></td></tr><tr><tdalign="right"><h:outputTextvalue="Cidades"></h:outputText></td><tdalign="right"> <p:inplacelabel="Clique duas vezes"effectSpeed="fast"event="dblclick"><h:selectOneMenuid="cidades"value="#{usuarioBeans.user.cidade}"><f:selectItemsvalue="#{usuarioBeans.cidades}"/></h:selectOneMenu></p:inplace></td>
dmandrak
Olá!
Não sei se será de muita ajuda mas acredito que se vc fizer algo com o ajax update pode funcionar.
No forum do primefaces eles disseram que seria a melhor forma (talvez a única http://forum.primefaces.org/viewtopic.php?f=3&t=6671)
Vou dar o exemplo do meu caso: