vrijdag 20 november 2009

outputText renders date wrong?

outputText is rendering dates wrong! I created a simple testcase with some dates. The 2 lines per date should print exactly the same date because only difference is that that I'm using the outputText tag or not. Like this:

<u>test java.util.Date</u>
<p>this is the date without outputText tag: #{helloBean.currentDate}</p>
<p>this is the date wit outputText tag: <h:outputText value="#{helloBean.currentDate}" /></p>

It's always the line without outputText tag that is printing just fine. Problem only occured when fetching a date from database. Like DB2 and HSQLDB.

test simple util.Date
this is the date without outputText tag: Fri Nov 20 13:40:17 CET 2009
this is the date wit outputText tag: 20-nov-2009

test with db2
this is the date without outputText tag: 2009-06-23
this is the date wit outputText tag: 22-jun-2009

test sql.date
this is the date without outputText tag: 2009-11-20
this is the date wit outputText tag: 20-nov-2009

test other db (hsqldb) date
this is the date without outputText tag: 2009-11-20
this is the date wit outputText tag: 19-nov-2009

Code used in bean:
public Date getHSQLDBDate() throws Exception {
  Date date = null;
  Class.forName("org.hsqldb.jdbcDriver");
  Connection connection = DriverManager.getConnection(
    "jdbc:hsqldb:mem:test", "sa", "");
  try {
   Statement statement = connection.createStatement();
   try {
    try {
     statement.execute("drop table test");
    } catch (Exception e) {
     // ignore
    }
    statement.execute("create table test (adate date)");
    PreparedStatement pstat = connection
      .prepareStatement("insert into test(adate) values(?)");
    pstat.setDate(1, new java.sql.Date(Calendar.getInstance()
      .getTime().getTime()));
    pstat.execute();
    ResultSet set = statement
      .executeQuery("select adate from test");
    try {
     if (set.next()) {
      date = set.getDate("adate");
     }
    } finally {
     set.close();
     pstat.close();
    }
   } finally {
    statement.close();
   }
  } finally {
   connection.close();
  }

  return date;
 }

Geen opmerkingen:

Een reactie posten