Formatar Hora Carregada Pelo DWR Javascript

Olá Galera,

Mais uma vez venho aqui pedir uma ajuda com meu primeiro projeto em Java.

Tenho uma página .jsp onde os usuários do sistema poderão criar turmas de um curso, selecionando a disciplina, professores e horários, previamente cadastrados no banco de dados. E funciona da seguinte forma, o usuário seleciona a disciplina, dai na segunda combo box, exibe apenas os professores que podem ministrar a disciplina escolhida, escolhendo o professor serão listadas na outra combo os horários que tal professor tem disponíveis para novas turmas.

O controle dessas combo box foi feito utilizando o DWR e está funcionando muito bem, exceto por um detalhe.

Quando são carregados os horários pelo DWR eles não vem formatados, e também não obedecem a formatação que coloquei (usando jstl fmt) no select, ficando a hora naquele formato estranho - Thu Jan 01 1970 21:00:00 GMT-0200, quando gravo no banco, tudo funciona perfeitamente, o único problema mesmo é a formatação da hora.

Gostaria de saber se tem algum código que possa inserir dentro do select (o combo box) para que quando os dwr mande os dados para lá eles sejam exibidos formatados.

Ou então se tenho como no próprio DWR formatar isso e já mandar para o select formatado.

Abaixo o código da página JSP

[code]

<c:import url="…/cabecalho.jsp" />

Adicionar Turmas

Data Inicio:

Data Fim:

Disciplina:

Selecione…
<c:forEach var=“disciplina” items="${daoDisciplina.lista}" varStatus=“id”>
${disciplina.nome}
</c:forEach>


Professor:

Selecione…
<c:forEach var=“professor” items="${daoProfessor.lista}" varStatus=“id”>
${professor.nome}
</c:forEach>


Horário:

Selecione…
<c:forEach var=“horario” items="${daoHorario.lista}" varStatus=“id”>

<fmt:formatDate type=“time” value="${horario.horaInicial}"/> //formatação funciona normal na hora que exibe a lista de horários completa, mas quando carrega os outros horários via javascript a lista é apagada e são adicionados novamente os horários, mas ficam sem a formatação.

</c:forEach>


Situação:

Ativa
Inativa
Em Espera





Voltar para o Menu Inicial
[/code]

Boa tarde!

Você pode usar a classe SimpleDateFormat do próprio JAVA.
Dê uma olhada na documentação do JAVA.
Apesar que… você deseja fazer isso com JavaScript?

Guri.

Hum… pensei no SimpleDateFormat também, mas não sei como faria isso. o DWR acessa um DAO que tem o médoto que faz a consulta no banco de acordo com o professor selecionado para mostrar os seus respectivos horários, para usar o SimpleDateFormat acho que seria ai, nesse caso ele já mandaria a data formatada.

Porem como vou fazer isso?

Já usei o SimpleDateFormat em outras coisas e funcionou muito bem… mas nesse caso não sei como fazer.

Segue o meu DAO para vc ver como que funciona:

[code]public List listar(Professor professor){
List listaHorarios = new ArrayList();

	PreparedStatement stmt = null;
			
	try {
		String sql = "select * from professor, horario, profhorario where professor.idprofessor = '" + professor.getId() + "' and profhorario.idhorario = horario.idhorario and professor.idprofessor = profhorario.idprofessor group by horario.idhorario";
		
		stmt = connection.prepareStatement(sql);
		
		ResultSet rs = stmt.executeQuery();
		
		while (rs.next()) {
			//Criando o objeto Horario
			Horario horario = new Horario();
			horario.setId(rs.getInt("idhorario"));
			horario.setDia(rs.getString("dia"));
			horario.setTurno(rs.getString("turno"));
			horario.setHoraInicial(rs.getTime("horaInicial")); //como faria para adicionar a formatação aqui?
			horario.setHoraFinal(rs.getTime("horaFinal")); //e aqui?
											
			//Adicionando o objeto a lista
			listaHorarios.add(horario);
		}
		rs.close();
		stmt.close();		

	} catch (SQLException e) {
		throw new RuntimeException(e);
	}		
	return listaHorarios;		
}[/code]

Cara, o que você acha de trazer a data já formatada do banco?
Isso seria uma boa opção :smiley:
Mas o seu setHora tem que ser String…
Qual é o banco que você está utilizando a aplicação?

Guri.

Estou fazendo um teste aqui trabalhando com String, para ver se vai funcionar bem, trabalho com mysql.

Tente isso:

horario.setHoraInicial(new SimpleDateFormat("dd/MM/yyyy").format(rs.getTime("horaInicial")));

E com relação a sua consulta SQL, vou te duas dicas:

  1. Ao invés de colocar o asterisco, coloque os campos que você realmente usará. Isso melhora o desempenho da consulta.
  2. Eu não conheço muito bem MySQL, mas não tem como você fazer os JOINS junto com as tabelas? Aí você não mistura o que é junção de tabelas e o que é filtro de consulta :smiley:

Guri.