[resolvido]jsf - recuperando valor antes de submeter
4 respostas
kelvis
Help-me pessoALL…
Preciso recuperar o valor de um <h:inputText> no onChanged de um rich:calendar para fazer um cálculo de dias…
to usando um <a4j:support event=“onChanged”> no calendar e na hora que seleciono uma data ele chama minha action certinho e recupera o valor do calendário,
porém o valor que digitei no input text não pega, vem sempre null… já tentei dando reRender no input e no formulário inteiro e não funciona…
Posta o código html e do managed bean. Caso não queira colocar o código todo, tente colocar ao menos as partes relevantes.
kelvis
ops… vamos lá amigão…
Eis os fontes
minha xhtml
<a4j:outputPanelid="opTudo"><a4j:outputPanel><!-- Campo Quantidade de dias ( nao persistente, só serve pra calcular automaticamente a data de previsao de término ) --><h:outputTextclass="output-01"value="Dia(s):"/>  <h:inputTextclass="input-02"maxlength="2"size="4"id="numeroDias"value="#{eventoAfastamentosTemporariosControle.eventoAfastamentosTemporarios.numeroDias}"></h:inputText><h:outputTextclass="output-01"value="Data Início:"title="Informe a Data de Início do Afastamento"></h:outputText><rich:calendarenableManualInput="false"required="true"requiredMessage="Data Início é obrigatório"oninputkeypress="formatar_mascara(this,'##/##/####');"maxlength="10"inputSize="12"inputClass="calendar"datePattern="dd/MM/yyyy"id="dtInicio"value="#{eventoAfastamentosTemporariosControle.eventoAfastamentosTemporarios.dtInicio}"><a4j:supportevent="onChanged"ajaxSingle="true"reRender="numeroDias"action="#{eventoAfastamentosTemporariosControle.calcularDtPrevisao()}"/></rich:calendar></a4j:outputPanel></a4j:outputPanel>
meu Controle
/** * Método calcula a data de previsao de termino do afastamento baseando-se * na data inicial e quantidade de dias informados no form * * @throws ParseException */publicvoidcalcularDtPrevisao(){GregorianCalendargc=newGregorianCalendar();gc.setTime(eventoAfastamentosTemporarios.getDtInicio());//Esse ele consegue pegar pois o a4j:support está dentro do calendargc.add(Calendar.DAY_OF_MONTH,eventoAfastamentosTemporarios.getNumeroDias());//Esse eventoAfastamentosTemporarios.getNumeroDias() vem nulleventoAfastamentosTemporarios.setDtPrevisao(gc.getTime());}
meu Bean
//Anotei com @Transient pois esse dado não é persistido no banco @TransientprivateIntegernumeroDias;publicIntegergetNumeroDias(){returnthis.numeroDias;}publicvoidsetNumeroDias(IntegernumeroDias){this.numeroDias=numeroDias;}
Frisando que já tentei dando reRender no outPutPanel inteiro e não deu certo…
outra tentativa que fiz foi colocando o <a4j:support event=“onBlur”> no campo numeroDias, daí ele consegue pegar o valor, mas deixa de recuperar o do calendar, ai fica na mesma…
Espero que possam me ajudar!
kelvis
Consegui resolver colocando um a4j:region nos dois campos…