Toda vez que eu digito um valor… ele popula um arrayList e adiciona vários inputText na tela de acordo com uma porcentagem… cada input terá o seu valor…
Quando eu me logo no sistema e acesso a primeira vez a pagina blz…ele faz perfeito…
se eu altero aquele valor… ele jah fica com erro… pq ele não altera o valor do primeiro text…
Sempre que eu chamo meu metodo eu dou um new arraylist… para ele zerar e popular de novo…
Eu debuguei e ele faz isso…zera e popula bonitinho… porém na tela os valores não aparecem corretos… parece que fica alguma sujeira…alguém sabe como eu resolvo isso???
Se eu uso o scopo request ai ele faz certinho funfa que eh uma blz…porém quando eu clico em salvar…essa budega perde os dados do meu array… =´[
já com o sessio n não… o valor fica la…porém ele fica exibindo na tela o valor errado…mas no array list os valores estão certos…alguém me ajuda please… =´[
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.org/ui"><ui:compositiontemplate="/templates/interna.xhtml"><ui:definename="titulo">PedidosdeServiço</ui:define><ui:definename="corpo"><p:ajaxStatusonstart="statusDialog.show();"onsuccess="statusDialog.hide();"/><p:dialogmodal="true"widgetVar="statusDialog"header="Status"draggable="false"closable="false"><h:graphicImagestyle="align: center"library="imagens"name="loading.gif"/></p:dialog><h:formid="formPedido"><p:growlid="growl"showDetail="true"/><p:panelid="empresa"header="Informações do Fornecedor"><p:messages/><h:inputHiddenvalue="#{pedidoBean.pedidoServico.codigo}"/><h:inputHiddenvalue="#{pedidoBean.contrato.codigo}"/><h:panelGridcolumns="2"><h:panelGroup><h:outputLabelvalue="Fornecedor: "for="fornecedor"/></h:panelGroup><h:panelGroup><h:outputLabelvalue="Nº do Contrato "for="contrato"/></h:panelGroup><h:panelGroup><p:selectOneMenuid="fornecedor"value="#{pedidoBean.empresa.empresa}"><f:selectItemitemValue=""itemLabel="Selecione..."/><f:selectItemsvalue="#{pedidoBean.fornecedores}"/><f:ajaxexecute="fornecedor"render="empresa"event="change"listener="#{pedidoBean.buscarContrato}"></f:ajax></p:selectOneMenu></h:panelGroup><h:panelGroup><p:inputTextid="contrato"disabled="true"required="true"requiredMessage="Nº do contrato obrigatório"value="#{pedidoBean.contrato.numero}"/></h:panelGroup></h:panelGrid></p:panel><br/><p:panelid="pedido"header="Dados do pedido de serviço"><h:panelGrid><h:panelGroup><h:outputLabelvalue="Tipo de Serviço: "for="tipo"/></h:panelGroup><h:panelGroup><p:selectOneRadioid="tipo"value="#{pedidoBean.pedidoServico.tipo}"><f:selectItemitemValue="legado"itemLabel="Legado"/><f:selectItemitemValue="outros"itemLabel="Outros"/><f:ajaxexecute="tipo"render="anexo"/></p:selectOneRadio></h:panelGroup></h:panelGrid><h:panelGridcolumns="2"><h:panelGroup><h:outputLabelvalue="Nº da proposta: "for="proposta"/></h:panelGroup><h:panelGroup><h:outputLabelvalue="Nº anexo: "for="anexo"/></h:panelGroup><h:panelGroup><p:inputTextid="proposta"required="true"requiredMessage="Nº da proposta obrigatório"size="10"maxlength="20"value="#{pedidoBean.pedidoServico.numeroProposta}"/></h:panelGroup><h:panelGroup><p:inputTextid="anexo"value="#{pedidoBean.pedidoServico.numeroAnexo}"size="10"maxlength="20"disabled="#{pedidoBean.pedidoServico.tipo != 'outros'}"/></h:panelGroup></h:panelGrid><h:panelGridcolumns="2"><h:panelGroup><h:outputLabelvalue="Valor Total: "for="valorTotal"></h:outputLabel></h:panelGroup><h:panelGroup><h:outputLabelvalue="Dias úteis: "for="dias"/></h:panelGroup><h:panelGroup><p:inputTextid="valorTotal"value="#{pedidoBean.pedidoServico.valorTotal}"required="true"requiredMessage="Valor total obrigatório"maxlength="30"><f:convertNumberminFractionDigits="2"/><f:attributename="onkeydown"value="return stefaniniLib.kdAmount(event,'#.###.###.###,##');"/><f:attributename="onkeyup"value="stefaniniLib.aAmount(event,'#.###.###.###,##');"/></p:inputText></h:panelGroup><h:panelGroup><p:inputTextid="dias"required="true"requiredMessage="Dias úteis obrigatório"size="5"maxlength="5"value="#{pedidoBean.pedidoServico.qtdDiasUteis}"><f:ajaxexecute="pedido"render="gridParcela"event="blur"listener="#{pedidoBean.criaText}"></f:ajax></p:inputText></h:panelGroup></h:panelGrid></p:panel><p:panelid="panelParcela"header="Parcelas"><h:panelGridcolumns="1"id="gridParcela"><h:panelGroup><h:outputLabelvalue="Nº Parcelas"for="parcela"/></h:panelGroup><h:panelGroup><p:inputTextid="parcela"value="#{pedidoBean.pedidoServico.qtdParcela}"required="true"requiredMessage="Nº parcelas obrigatório"size="3"maxlength="3"></p:inputText></h:panelGroup><h:panelGroup><ui:repeatvalue="#{pedidoBean.parcelas}"var="ped"><h:panelGridcolumns="2"><h:panelGroup><h:outputLabelvalue="Parcela:"/></h:panelGroup><h:panelGroup><h:outputLabelvalue="Data de vencimento: "/></h:panelGroup><h:panelGroup><p:inputTextvalue="#{ped.valorParcela}"><f:attributename="onkeydown"value="return stefaniniLib.kdAmount(event,'#.###.###.###,##');"/><f:attributename="onkeyup"value="stefaniniLib.aAmount(event,'#.###.###.###,##');"/></p:inputText></h:panelGroup><h:panelGroup><p:calendareffect="fadeIn"navigator="true"value="#{ped.dtVencimento}"/></h:panelGroup></h:panelGrid></ui:repeat></h:panelGroup></h:panelGrid></p:panel><h:panelGridcolumns="2"><h:panelGroup><p:commandButtonaction="#{pedidoBean.salvar}"value="Salvar"update="empresa, pedido, growl, panelParcela"></p:commandButton></h:panelGroup><h:panelGroup><p:ajaxStatus><f:facetname="start"><h:graphicImagelibrary="imagens"name="loading.gif"/></f:facet><f:facetname="complete"><h:outputTextvalue=""/></f:facet></p:ajaxStatus></h:panelGroup></h:panelGrid></h:form></ui:define></ui:composition></html>
sempre que ele perde o foco no dias úteis ele chama o metodo e faz o cálculo!
vlww pela atenção
Hebert_Coelho
Tá, mas seu problema é depois que salva ou depois que o ajax chama esse método?
F
Furlani
quando o ajax chama o método…
toda vez que ele perde o foco no qtd de dias… ele tem um evento onblur…
que chama o metodo criarText…
só que esse quando ele cria os texts da pagina pelo ui:repeat…ele fica com valores incorretos…
no arrayList os valores ficam certo!
mas na pagina os texts ficam com valores diferentes…
ai só se eu deslogar e logar novamente que volta ao normal…
ele só faz certo 1 vez…se eu chamar esse metoo de novo… jah fica errado
vlw!
Hebert_Coelho
No render do ajax, coloca formPedido e testa.
F
Furlani
Ficou a mesma coisa… =[
caramba…que erro estranho…
o que eu fico intrigado é que ele popula correto o array…
mas a pagina fica exibindo errado…
Hebert_Coelho
Como está seu get do método?
F
Furlani
vou postar meu bean todo
/** * */packagebr.com.stefanini.sgi.web;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjavax.faces.application.FacesMessage;importjavax.faces.context.FacesContext;importjavax.faces.model.SelectItem;/** * <p> * <b>Title:</b> SGI - Sistema de Gestão Interno. * </p> * <p> * <b>Description:</b> * </p> * <p> * Inserir aqui a descrição do Tipo. * </p> * * @author Allan Furlani Nishigouri<BR/> * created 12/12/2011 <BR/> * @version 1.0 */publicclassPedidoServicoBean{privateEmpresaempresa=newEmpresa();privateContratocontrato=newContrato();privatePedidoServicopedidoServico=newPedidoServico();privateList<Parcela>parcelas;privateIntegernumeroParcelas=null;privateParcelaparcela=newParcela();privatefloatvalorTotal;privatefloatparcelado=0.0f;DecimalFormatdf=newDecimalFormat("###.0");publicStringnovo(){this.empresa=newEmpresa();this.contrato=newContrato();this.pedidoServico=newPedidoServico();this.numeroParcelas=null;this.parcela=newParcela();this.parcelado=0.0f;this.valorTotal=0.0f;return"/restrito/pedido_servico/pedido_servico";}publicvoidsalvar(){FacesContextcontext=FacesContext.getCurrentInstance();ContratoRNcontratoRN=newContratoRN();ParcelaRNparcelaRN=newParcelaRN();PedidoServicoRNpedidoServicoRN=newPedidoServicoRN();Contratocon=contratoRN.carregar(this.contrato.getCodigo());this.pedidoServico.setContrato(con);pedidoServicoRN.salvar(this.pedidoServico);this.parcela.setPedidoServico(this.pedidoServico);for(inti=1;i<=this.parcelas.size();i++){if(this.parcelas!=null){//this.parcela.setValorParcela(Float.parseFloat(this.parcelas.get(i)));this.parcela.setDtVencimento(newDate(System.currentTimeMillis()));parcelaRN.salvar(this.parcela);}}FacesMessagefacesMessage=newFacesMessage("Pedido de serviço salvo com sucesso");context.addMessage(null,facesMessage);this.novo();}publicvoidcriaText(){intdias=this.pedidoServico.getQtdDiasUteis();intmaior=22;intmenor=0;this.numeroParcelas=1;for(numeroParcelas=1;numeroParcelas<=18;numeroParcelas++){if(dias>menor&&dias<=maior){this.pedidoServico.setQtdParcela(numeroParcelas);break;}menor=menor+22;maior=maior+22;}this.parcelas=newArrayList<Parcela>();this.valorTotal=this.pedidoServico.getValorTotal();this.parcelado=0.0f;for(intb=1;b<=numeroParcelas;b++){switch(numeroParcelas){case1:this.parcelado=this.valorTotal;break;case2:if(b!=2){this.parcelado=Float.parseFloat(df.format(0.4f*this.valorTotal).replace(",","."));}else{this.parcelado=Float.parseFloat(df.format(0.6f*this.valorTotal).replace(",","."));}break;case3:if(b!=3){this.parcelado=Float.parseFloat(df.format(0.3f*this.valorTotal).replace(",","."));}else{this.parcelado=Float.parseFloat(df.format(0.4f*this.valorTotal).replace(",","."));}break;}Parcelaparc=newParcela();parc.setValorParcela(this.parcelado);parc.setDtVencimento(null);this.parcelas.add(parc);}}/** * @return the listaEstado */publicList<SelectItem>getFornecedores(){EmpresaRNempresaRN=newEmpresaRN();List<Empresa>listaEmpresa=empresaRN.listar();List<SelectItem>itens=newArrayList<SelectItem>(listaEmpresa.size());for(Empresas:listaEmpresa){itens.add(newSelectItem(s.getEmpresa(),s.getCnpj()+" "+s.getRazaoSocial()));}returnitens;}publicvoidbuscarContrato(){ContratoRNcontratoRN=newContratoRN();EmpresaRNempresaRN=newEmpresaRN();this.empresa=empresaRN.carregar(this.empresa.getEmpresa());this.contrato=contratoRN.carregar(this.empresa.getContrato().getCodigo());}/** * @return the empresa */publicEmpresagetEmpresa(){returnempresa;}/** * @param empresa * the empresa to set */publicvoidsetEmpresa(Empresaempresa){this.empresa=empresa;}/** * @return the contrato */publicContratogetContrato(){returncontrato;}/** * @param contrato * the contrato to set */publicvoidsetContrato(Contratocontrato){this.contrato=contrato;}/** * @return the pedidoServico */publicPedidoServicogetPedidoServico(){returnpedidoServico;}/** * @param pedidoServico * the pedidoServico to set */publicvoidsetPedidoServico(PedidoServicopedidoServico){this.pedidoServico=pedidoServico;}/** * @return the pedidos */publicList<Parcela>getParcelas(){returnparcelas;}/** * @param pedidos * the pedidos to set */publicvoidsetParcelas(List<Parcela>parcelas){this.parcelas=parcelas;}/** * @return the parcela */publicParcelagetParcela(){returnparcela;}/** * @param parcela * the parcela to set */publicvoidsetParcela(Parcelaparcela){this.parcela=parcela;}}
vlw pela ajuda jakefrog
fbl.lucas
Tenta comentar o trecho de código abaixo e vê se nenhum item vai ser exibido na tela.
poderia me dizer quais são os valores que não estão sendo exibidos corretamente?
F
Furlani
No evento onblur no text qtdade de dias uteis…
Dependendo da quantidade de dias ele faz um calculo para saber qual a quantidade de parcelas e qual o valor de cada parcela…
Ele popula um arrayList e monta dinamicamente vários inputtexts na tela de acordo com a quantidade de parcelas.
Quando eu me logo no sistema, o primeiro acesso… ele calcula certinho…
Quanto eu digito outra quantidade de dias… jah da erro… ele exibe valores incorretos…
porémm o arraylist possui os valores certos e retorna correto(debugando eu vi os valores certinhos)
mas na exibição da tela fica incorreto!
vlw!
fbl.lucas
Caso você acesse a tela informe a quantidade de dias, depois altera esta quantidade.
Ele esta mantendo os mesmos valores exibidos quando você informou a qtd pela primeira vez ou está exibindo algo aleatório?