Imput Data

Estou tendo dificuldade em formatar o campo data de uma tela de cadastro.

Segue abaixo o JSP:

<label id="cpfCadText" for="data">Data Finalizacao:</label> <input id="cpfCadLabel" class="required" type="date" name="tarefa.data" value="${tarefa.data }" />
A classe modelo desse cadastro e da seguinte maneira:

	@NotNull
	private Calendar data;

Sei que no banco de dados ela deve ser inserida no seguinte formato “2014-04-15 00:00:00” mais não sei como ela vai como se o campo fosse nulo.

Acho que você tem que explicar melhor o seu problema.

Tá faltando muita informação aí

Tenho um campo “Imput” a qual entro com uma data porem ao tentar cadastrar no log da aplicação fala que o formato e nulo.
Porem estou dando entrada de maneira correta.

Como você faz pra enviar esse valor pro servidor?

Ele está nulo indo da tela pro servidor? ou do servidor para o BD?

Do servidor pro banco.

E como você está persistindo esse dado?

Da seguinte maneira:

Controller:

public void adiciona(Tarefa tarefa) { validator.onErrorUsePageOf(TarefasController.class).novo(); dao.saveOrUpdate(tarefa); result.redirectTo(TarefasController.class).lista(); }

Dao:

public void saveOrUpdate(Tarefa obj) throws HibernateException { genericDAO.saveOrUpdate(obj); }
GenericDao:

public void saveOrUpdate(T obj) throws HibernateException { try { this.session.getTransaction().begin(); this.session.saveOrUpdate(obj); } catch (HibernateException e) { this.session.getTransaction().rollback(); throw e; } }

e qual o erro que ocorre quando você tenta gravar? Tem uma stacktrace?

15:58:42,274 DEBUG [ParametersInstantiatorInterceptor] There are conversion errors: [ValidationMessage{category=data, message=???is_not_a_valid_date???, parameters=null}]

Isso não é um erro, é uma mensagem de DEBUG

Sim. Mais esse e o unica mensagem de retorno que tenho não da um erro ou null point exepception. A mensagem e só essa que o campo foi ou esta nulo.

Entendi, vamos tentar explorar mais. Três perguntas:

1 - Sua data está indo nula?
2 - Se você mandar uma data válida, ele grava normalmente?
3 - Seu campo da tabela permite valores nulos?

1 não
2 não
3 não

There are conversion errors: [ValidationMessage{category=data, message=???is_not_a_valid_date???

a data que vc tá passando não é uma data válida.

Como vc tá passando ela?

PS: Se vc colocasse no título que era VRaptor era mais fácil de responder sua dúvida :wink:

Me desculpe quanto ao titulo foi falta de atenção mesmo.

Vamos la No meu JSP o imput esta da seguinte maneira:

No controller eu chamo um genericDAo:

// Cadastrar Tarefa public void adicionar(Tarefa tarefa) { dao.saveOrUpdate(tarefa); result.use(Results.logic()).redirectTo(TarefasController.class).lista(); }

E no GenericDAO tenho a seguintes ações:

public void saveOrUpdate(T obj) throws HibernateException { try { this.session.getTransaction().begin(); this.session.saveOrUpdate(obj); } catch (HibernateException e) { this.session.getTransaction().rollback(); throw e; } }

E o modelo da classe esta declarado da seguinte maneira:

	private Calendar data;

Lucas estava vendo alguns exemplos e tentando implementar um CalendarConverter porem sem muito sucesso segue abaixo a classe que tentei implementar:[code]

@Convert(Calendar.class)
@ApplicationScoped
public class CalendarConverter implements Converter<Calendar> {

public Calendar convert(String value, Class&lt;? extends Calendar&gt; arg1,
		ResourceBundle arg2) {
	try {
		 
		String dataEmTexto = value;
	    Calendar data = null;
	    
	    Date date = new SimpleDateFormat(&quot;dd/MM/yyyy&quot;).parse(dataEmTexto);
	    data = Calendar.getInstance();
	    data.setTime(date);
	    
	    return data;
	    
		
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	} catch (java.text.ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	}
}  

}
[/code]

Você consegue colocar um breakpoint nessa classe e rodar o servidor em debug, pra ver qual é o valor que está chegando aí?