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] ]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

代码其实很简单,主要是一种技术的应用.下面是代码:

/**

      *

      * <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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值