Não consigo exibir a data do meu BD Mysql no JSP.
Esta é uma duvida que ainda persiste mesmo depois de ter lido alguns artigos aqui do forum.
Estou tentando exibir usando o ResultSet
[code]public ListgetLista()throws SQLException{
//prepara o statment para a conexao
PreparedStatement stmt=this.connection.prepareStatement("select c.Cod,c.Login,c.Categoria,c.Data_Abertura,c.Prioridade from Chamado c INNER JOIN Usuario u on c.Login=u.Login ");
ResultSet rs=stmt.executeQuery();
List<Chamado>chamados=new ArrayList<Chamado>();
while(rs.next()){
Chamado chamado=new Chamado();
chamado.setCod(rs.getInt("Cod"));
chamado.setLogin(rs.getString("Login"));
chamado.setCategoria(rs.getString("Categoria"));
chamado.setData_Abertura(rs.getString("Data_Abertura"));
chamado.setPrioridade(rs.getString("Prioridade"));
//adicionando o objeto a lista
chamados.add(chamado);
}
rs.close();
stmt.close();
return chamados;
}[/code]
Gostaria de uma ajuda pois ainda nao consigui exibir o campo Data_Abertura no meu JSP
public class Chamado {
private int Cod;
private String Descricao;
private String Categoria;
private String Prioridade;
private String Status;
private String Data_Abertura;
private String Login;
//Metodo para gravar no banco
public String formatDateJdbc(String date){
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
try {
java.util.Date d1 = null;
d1 = f.parse(date);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = format.format(d1);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
// metodo para mostrar para o usuario
public static String formatDateUser(String data){
SimpleDateFormat f = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
try {
java.util.Date d1 = null;
d1 = f.parse(data);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
data = format.format(d1);
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public String getDate_Abertura() {
String data_abertura = this.formatDateUser(Data_Abertura);;
return data_abertura;
}
public void setData_Abertura(String data_abertura) {
data_abertura=this.formatDateUser(Data_Abertura);
}
public String getLogin() {
return Login;
}
public void setLogin(String login) {
Login = login;
}
public String getCategoria() {
return Categoria;
}
public void setCategoria(String categoria) {
Categoria = categoria;
}
public int getCod() {
return Cod;
}
public void setCod(int cod) {
Cod = cod;
}
public String getDescricao() {
return Descricao;
}
public void setDescricao(String descricao) {
Descricao = descricao;
}
public String getPrioridade() {
return Prioridade;
}
public void setPrioridade(String prioridade) {
Prioridade = prioridade;
}
public String getStatus() {
return Status;
}
public void setStatus(String status) {
Status = status;
}
Cara aparentemente esta correto, Faz assim, Roda isso ai em modo Debug, e da uma olhada se nessa list “chamados” esta a variavel da data esta chegando preenchida.
Entao, no meu ChamadoDAO o metodo adicionaChamado usa o TimeStamp pra add a date/time
[code]public void adiciona(Chamado chamado){
try{
//Prepara o statment para conexoes
PreparedStatement stmt=this.connection.prepareStatement(“insert into Chamado (Data_Abertura,Login,Descricao,Categoria,Prioridade) values (?,?,?,?,?)”);
//Seta os valores para inserção
java.util.Date date=new java.util.Date();
stmt.setTimestamp(1, new java.sql.Timestamp(date.getTime()));
stmt.setString(2, chamado.getLogin());
stmt.setString(3, chamado.getDescricao());
stmt.setString(4, chamado.getCategoria());
stmt.setString(5, chamado.getPrioridade());
//Executa
stmt.execute();
//Fecha
stmt.close();
}catch(SQLException e){
System.out.println("Erro ao tentar adicionar novo Chamado>>>\t"+e.getMessage()+"<<<<<<");
}
}[/code]
No meu Mysql aparece a Date/Time normal
será que pelo fato de ser TimeStamp o DateFormat nao identifica ?
public class Usuario implements Serializable {
private Date dtCriacao;
public Date getDtCriacao() {
return dtCriacao;
}
public void setDtCriacao(Date dtCriacao) {
this.dtCriacao = dtCriacao;
}
}
Minha Action:
public class PesquisarUsuariosAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws Exception {
UsuarioDAO dao = new UsuarioDAO();
Collection<Usuario> collection = new ArrayList<Usuario>();
collection = dao.pesquisar();
if(!collection.equals("") && collection != null) {
request.setAttribute("collection", collection);
}else {
request.setAttribute("collection", "Não Existe Dados na base");
}
form.reset(mapping, request);
return mapping.findForward("success");
}
}[/code]
Meu Form:
[code]public class UsuarioForm extends ActionForm {
private static final long serialVersionUID = 1L;
private Usuario usuario;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
super.reset(mapping, request);
this.usuario = new Usuario();
}
}
Meu DAO:
[code]
public class UsuarioDAO extends ConnectionFactory {
public UsuarioDAO() {
super();
// TODO Auto-generated constructor stub
}
public List<Usuario> pesquisar() throws SQLException {
this.connection = ConnectionFactory.getInstance().getConnection();
StringBuffer sql = new StringBuffer();
ResultSet rs = null;
sql.append(" SELECT us.dtCriacao FROM usuario us ");
List<Usuario> lista = new ArrayList<Usuario>();
try {
PreparedStatement pstmt = this.connection.prepareStatement(sql.toString());
rs = pstmt.executeQuery();
while(rs.next()) {
Usuario usuario = new Usuario();
usuario.setDtCriacao(rs.getTimestamp(5));
lista.add(usuario);
}
pstmt.close();
rs.close();
connection.close();
} catch (SQLException e) {
throw new SQLException(e.getMessage());
}
return lista;
}
Depois de fazer algumas alteraçoes o problema agora nao eh mais no DateFormat.Quando eu Debug ele me retorna todos os campos de data_abertura como Null
è cara ate tentei mas não ta dando certo.
No meu Banco Mysql no campo Data_Abertura aparace a data a hora e os minutos.Mas na hora de exibir no JSP ele continua dando o mesmo erro
Cara você notou que esta dando um NullPointException, isso significa que o valor da data esta chegando null. Tenta fazer os Getters e Setters no modo normal como eu te passei. Ai na JSP você faz a Formatação usudo o fmt do JSTL.