Atualizando rich:calendar no backing bean

1 resposta
superpri

gente, eu tenho uma página de pesquisa que possui dois períodos de data pra pesquisar: o de vencimento e o de data de inserção.
junto no form, eu tenho uma dropdown de lançamento. pra cada tipo de lançamento, aparece o período de data pra pesquisar correspondente.

a cada vez que troca o lançamento e troca o período de data, eu gostaria de colocar a data de hoje nos values dos calendars do período de data selecionado.
estou fazendo isso no valueChangeListener da minha dropdown, porém o value do calendar não é atualizado na tela.
já tentei por reRender e inserindo uma navigation rule pra redirecionar pra mesma página após o processamento da valueChangeListener.

alguém tem alguma dica?

códigos:

form:

<a4j:form>
(...)
        <h:outputText value="Lançamento" />
	<h:selectOneMenu id="tipoLancamento"
		value="${TituloChequeController.searchTipoLancamento}"
		valueChangeListener="${TituloChequeController.selectTipoLancamento}">
		<f:selectItems
			value="${TituloChequeController.tipoLancamentoOptions}" />
		<a4j:support reRender="searchPanel,resultsPanel" event="onchange" />
	</h:selectOneMenu>
	<rich:spacer />
	<rich:spacer />

	<h:outputText value="Período" />
	<rich:calendar value="#{TituloChequeController.searchPeriodoInicio}"
		popup="true" datePattern="dd/MM/yyyy" enableManualInput="true"
		id="selectDataInicio" showApplyButton="false" style="width:200px"
		reRender="searchPanel,resultsPanel">
	</rich:calendar>
	<h:outputText value="a" />
	<rich:calendar value="#{TituloChequeController.searchPeriodoFinal}"
		popup="true" datePattern="dd/MM/yyyy" enableManualInput="true"
		id="searchDataFinal" showApplyButton="false" style="width:200px"
		reRender="searchPanel,resultsPanel">
	</rich:calendar>

	<h:outputText value="Vencimento" id="vencimentoTag1"
		rendered="#{TituloChequeController.searchTipoLancamento == 'A'}" />
	<rich:calendar
		value="#{TituloChequeController.searchVencimentoInicio}"
		popup="true" datePattern="dd/MM/yyyy" enableManualInput="true"
		id="searchVencimentoInicio" showApplyButton="false" style="width:200px"
		rendered="#{TituloChequeController.searchTipoLancamento == 'A'}">
		<a4j:support event="onchanged" ajaxSingle="true" />
	</rich:calendar>
	<h:outputText value="a" id="vencimentoTag2"
		rendered="#{TituloChequeController.searchTipoLancamento == 'A'}" />
	<rich:calendar
		value="#{TituloChequeController.searchVencimentoFinal}"
		id="searchVencimentoFinal" popup="true" datePattern="dd/MM/yyyy"
		enableManualInput="true" showApplyButton="false" style="width:200px"
		rendered="#{TituloChequeController.searchTipoLancamento == 'A'}">
	</rich:calendar>
(...)
</a4j:form>

backing bean do valueChangeListener:

public String selectTipoLancamento(ValueChangeEvent e) {

        searchTipoLancamento = (Character) e.getNewValue();
        
        switch (searchTipoLancamento) {
            case 'E':
            case 'L':
                searchVencimentoFinal = null;
                searchVencimentoInicio = null;
                searchPeriodoInicio = new Date();
                searchPeriodoFinal = new Date();
                break;
            case 'A':
                searchVencimentoFinal = new Date();
                searchVencimentoInicio = new Date();
                searchPeriodoInicio = null;
                searchPeriodoFinal = null;
                break;
        }
        
        this.clearResults();
        
        logger.debug("public void selectTipoLancamento(ValueChangeEvent e)");
        logger.debug(String.format("searchVencimentoFinal: %s", searchVencimentoFinal));
        logger.debug(String.format("searchVencimentoInicio: %s", searchVencimentoInicio));
        logger.debug(String.format("searchDataInicio: %s", searchPeriodoInicio));
        logger.debug(String.format("searchDataFinal: %s", searchPeriodoFinal));
        logger.debug(String.format("results: %s", results));
        
        return "back:localizaDocumentos";
    }

1 Resposta

felipe.sodre

Oi amigo tudo bem?

consegui resolver usando o a4j:suport no evento onchanged:

<rich:calendar style=“color:#000000” value="#{sm2General.initDate}“
inputClass=“inputCalendar” datePattern=“dd/MM/yyyy”>
<a4j:support event=“onchanged” process=”#{sm2General}"/>
</rich:calendar>

sm2General é o bean abraço

Criado 14 de abril de 2010
Ultima resposta 16 de jun. de 2010
Respostas 1
Participantes 2