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?
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?
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
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<? extends Calendar> arg1,
ResourceBundle arg2) {
try {
String dataEmTexto = value;
Calendar data = null;
Date date = new SimpleDateFormat("dd/MM/yyyy").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í?