JSTL+EL表达式方法获取Oracle的Clob字段内容

简介:
我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行,可是不使用MVC框架,使用jsp页面+JSTLsql标签去读取数据库的数据这种方式就麻烦了,真的很麻烦,你不能在jsp上面嵌java代码吧?要是写java代码 脸上都无光啊 . 呵呵.我们这个新项目就是使用jsp+JSTL标签进行开发.可是有几个表的字段都是Clob类型的(因为要往里面存网页)存的时候使用的控件,可是取出来就取不出来了 结果我写了一个Tag(自定义标签),但是还是挺麻烦的(毕竟自定义标签不是干这个用的,他是干更高级任务的),最终我想到了EL表达式方法在我的一篇Blog中有介绍[ 自定义EL表达式方法 [url]http://tonyaction.blog.51cto.com/227462/42348[/url] ]
代码其实很简单,主要是一种技术的应用.下面是代码:
/**
      *
      *   <pre>
      *   创建人 :   王涛
      *   创建于 :   2007 - 8 - 7
      *     :
      *      根据得参数 clob(CLOB 类型 ) 获得其中的内容 , 并以 String 方式返回
      *   </pre>
      *
      *   @param   clob
      *   @return
      *   @throws   Exception
      */
     public   static  String mClob(Object clob)  throws  Exception {
        if  (clob ==  null ) {
            return   "" ;
       }
       StringBuffer clobString =  new  StringBuffer();
        if  (clob  instanceof  Clob) {
            int  y;
            char  ac[] =  new   char [4096];
           Reader reader = ((Clob) clob).getCharacterStream();
            while  ((y = reader.read(ac, 0, 4096)) != -1) {
              clobString.append( new  String(ac, 0, y));
           }
        else  {
           clobString.append(clob.toString());
       }
        return  clobString.toString();
    }
 
elfunc.tld 配置文件中需要这么写
< function >
        < description > Clob 数据内容函数 </ description >
        < name > mClob </ name >
        < function-class > com.tianjin.canic.tjeg.utils.ELFuncUtil </ function-class >
        < function-signature > java.lang.String mClob(java.lang.Object) </ function-signature >
        < example > ${elf:mClob(clob)} </ example >
     </ function >
 
 
Jsp 页面需要这么写
获得数据库中的结果集
 
< sql:transaction  dataSource = "jdbc/tjeg" >
            < sql:query  var = "fwsx_info" >
                   SELECT WBJ_ID,BL_URL,FWSX_INFO,FWSX_NAME,FW_FALV,FW_QIXIAN,FW_TIAOJIAN,FW_CAILIAO,FW_SHOUFEI,FW_DOWN FROM TJEG_FWSX WHERE ID = ?
                    < sql:param > ${param.id} </ sql:param >
            </ sql:query >
        </ sql:transaction >
迭代结果集
< c:forEach  var = "row"  items = "${fwsx_info.rows}">
< c:set  value = "${row.FW_FALV}" var="FW_FALV" scope="page"></c:set>
</ c:forEach >
然后页面将其读取出来
< c:out  value = "${elf:mClob(FW_FALV)}" escapeXml="false"></c:out>









本文转自 tony_action 51CTO博客,原文链接:http://blog.51cto.com/tonyaction/42455,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle 将表中的数据查出更改某一字段的值后再插入该表
Oracle 将表中的数据查出更改某一字段的值后再插入该表
32 2
|
4月前
|
SQL Oracle 关系型数据库
Oracle之如何限制字段内数据的录入
Oracle之如何限制字段内数据的录入
42 0
|
4月前
|
SQL Oracle 关系型数据库
java往oracle存clob类型的值时,字符长度过长怎么办?
java往oracle存clob类型的值时,字符长度过长怎么办?
70 1
|
5月前
|
Oracle 关系型数据库
Oracle新建数据表的两种方法
Oracle新建数据表的两种方法
|
3月前
|
存储 Oracle 关系型数据库
oracle 过滤字段中的中文,不再洋不洋土不土
oracle 过滤字段中的中文,不再洋不洋土不土
53 0
|
2月前
|
Oracle 关系型数据库 数据库
Flink Sink to Oracle 存在字段CLOB类型,如何处理错误”ORA-01461: 仅能绑定要插入LONG的LONG值“
做Flink CDC同步数据过程中,目标是Oracle数据库,其中某个字段较大被设置为CLOB类型,其中会遇到异常,”ORA-01461: 仅能绑定要插入LONG的LONG值“
|
4月前
|
SQL Oracle 关系型数据库
Oracle之替代OR的另一种方法
Oracle之替代OR的另一种方法
75 0
|
7月前
|
Oracle 关系型数据库 Java
java处理oracle的Clob字段类型的坑和2种解决办法
java处理oracle的Clob字段类型的坑和2种解决办法
|
7月前
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库优化的总结及优化方法
Oracle数据库优化的总结及优化方法
56 0