JSTL标签显示出oracle的timestamp字段为奇怪字符!如${searchresult.publishdate}找出记录,时间显示为"oracle.sql.TIMESTAMP@187c12a" ;不知是不是读出的是时间对象,有谁遇到过类似问题吗,还望高手帮忙想想办法!

解决方案 »

  1.   

    就是timestamp类型的。不知读出来是这样,还是显示的问题
      

  2.   

    已经换不了了。我看用jsp读出来是否也这样。数据库里面正确的searchresult是JSTL标签读出来的。
      

  3.   

    好像要转换一下,
    我以前也曾遇到过,
    J2EE技术群:24739115
      

  4.   

    <fmt:formatDate value="${time}" pattern="yyyy-MM-dd" />
      

  5.   

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
      

  6.   


    我试过了,不行。因为读出来的不是带毫秒的时间数字,而是"oracle.sql.TIMESTAMP@187c12a"这种类型的,应该转换不了吧。
      

  7.   

    我在想你数据库里的表有没有对应一个pojo类 那个类里的time是什么类型的 是不是oracle.sql.TIMESTAMP类型 能不能改为java.util.Data类型 估计之所以会打出oracle.sql.TIMESTAMP@187c12a就是因为oracle.sql.TIMESTAMP的toString方法没有重写过 或者你试试调用time对象的其他方法看看不要直接写${time}
      

  8.   

    楼上你说的也有可能。但麻烦是后台目前还没有源码。
    我试过,在oracle表里添加timastamp类型插入对应数据后,直接用在jsp用JDBC读出来是正确的,而用JSTL标签读出来就是这种错误的。怀疑可能跟JSTL标签有关。
      

  9.   


    在jsp用JDBC读出来的timestamp类型是带毫秒数的时间,有没有办法去掉这毫秒数呢?试过了好多,似乎对rs.getTimestamp("time")无法进行方法操作和转化,有谁遇到过,提供些办法解决一下吧
      

  10.   

    你先用最原始的方法读取,看能不能得到正确的数据,如果那样都得不到的话就不是JSTL的问题了很少用timestamp类型,所以也不知道怎么解决
      

  11.   

    最原始就用JDBC读出来吧,是正确的时间,还精确到3位毫秒数。
    就是JSTL读出的记录,直接引用这个timestamp字段就是对象值,貌似该有方法进一步读取时间。
      

  12.   

    ???
    searchresult如果是jstl标签读出来的那么后面再点肯定就不能正常显示了
      

  13.   


    我指的是searchresult是JSTL读出来的循环记录的变量,这样:<c:forEach items="${searchresults.rows}" var="searchresult"> ;
    然后,我用${searchresult.title}是能输出每条记录的标题的,而timestamp时间字段就错了。
      

  14.   

    后来改用JDBC读出来的timestamp时间经过处理后能正确显示了。谢谢大家的探讨和帮助:)
      

  15.   

    在查询的时候,把该字段to_date(timsestap)一下,获得一个date型,在页面就可以显示了