Olá pessoal,
Tenho uma tela em JSF rodando sobre myfaces-api-1.2.2.jar e estou precisando realizar uma rotina que realiza uma pesquisa e após os dados retornados na grid tenho um botão que aciona a funcionalidade de importação dos dados para uma outra tabela referentes à um registro específico.
Basicamente eu seto os campos dataInicial e dataFinal com a data atual ao carregar a tela na primeira vez já aplicando a consulta, porém após alterar os campos para outro período pesquisar e realizar a importação gostaria de setar a data atual novamente como se fosse uma funcionalidade de reset().
Tentei setar a data atual para os atributos no request e fazer um sendRedirect para a própria página e o atributo não é modificado.
Tentei usar a propriedade valueChangeListener para o campo <t:inputCalendar> invocando um método para setar o valor na propriedade e o método nunca era invocado, acabei descobrindo que este recurso funciona apenas na versão 2.0 do JSF, inclusive o
<f:ajax/> também não funciona para JSF 1.2
Segue abaixo a implementação resumida da tela e da classe que mapeia a funcionalidade de importação.
Agradeço a colaboração, qualquer ajuda será válida.
Página listar.jsf
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition template="/comum/template.jspx">
<f:view>
<t:document>
<t:documentHead>
<style type="text/css">
.yearRowStyle {
background-color: #A8D1E8;
color: green;
text-align: center;
font-weight: bold;
font-style:italic;
}
.weekRowStyle {
background-color: #D6EBFC;
}
.selectedDayCellStyle {
background-color: #ECD5D2;
}
</style>
</t:documentHead>
<t:documentBody>
<h:form id="frmListarSolicitacoes">
<table align="center" border="0">
<tr>
<td align="left">
Data Inicial
</td>
<td align="left">
Data Final
</td>
<td></td>
<td></td>
</tr>
<tr>
<td align="left">
<t:inputCalendar id="dataInicial" renderAsPopup="true" popupDateFormat="dd/MM/yyyy"
popupTodayDateFormat="dd-MMM-yyyy" popupWeekString="Semana" popupTodayString="Data atual:"
renderPopupButtonAsImage="true" popupButtonImageUrl="/imgs/calendar.png"
helpText="DD/MM/YYYY" forceId="true" value="#{solicitacaoConhecimentoFaces.dataInicial}" valueChangeListener="#{solicitacaoConhecimentoFaces.setDataAtual}"/>
</td>
<td align="left">
<t:inputCalendar id="dataFinal" renderAsPopup="true" popupDateFormat="dd/MM/yyyy"
popupTodayDateFormat="dd-MMM-yyyy" popupWeekString="Semana" popupTodayString="Data atual:"
renderPopupButtonAsImage="true" popupButtonImageUrl="/imgs/calendar.png"
helpText="DD/MM/YYYY" forceId="true" value="#{solicitacaoConhecimentoFaces.dataFinal}"/>
</td>
</tr>
</table>
<table>
<tr>
<td>
<t:commandButton alt="Importar Conhecimento"
rendered="#{solicitacao.flgSituacao == 'CONCLUIDO' ? 'true' : 'false'}"
actionListener="#{conhecimentoFaces.importar}" image="/imgs/salvar.jpg">
<f:attribute name="solicitacao" value="#{solicitacao}"/>
</t:commandButton>
</td>
</tr>
</table>
</h:form>
</t:documentBody>
</t:document>
</f:view>
</ui:define>
</ui:composition>
</html>
Classe ConhecimentoFaces.java :
package br.com.indados.sisfrete.faces;
public class ConhecimentoFaces {
public ConhecimentoFaces() {
}
@SuppressWarnings("static-access")
public void importar(ActionEvent evt) {
final SolicitacaoConhecimento solicitacao = (SolicitacaoConhecimento)evt.getComponent().getAttributes().get("solicitacao");
BOFactory.getInstance().getConhecimentoBO().importarConhecimentos(solicitacao);
ExternalContext context = SisFreteUtil.getFacesContext().getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse)context.getResponse();
HttpServletRequest request = (HttpServletRequest)context.getRequest();
request.setAttribute("dataInicial", new Date());
request.setAttribute("dataFinal", new Date());
try {
response.sendRedirect("listar.jsf");
} catch (IOException e) {
e.printStackTrace();
}
}
...
}