我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行,可是不使用MVC框架,使用jsp页面+JSTL的sql标签去读取数据库的数据这种方式就麻烦了,真的很麻烦,你不能在jsp上面嵌java代码吧?要是写java代码
…
脸上都无光啊
…
.
呵呵.我们这个新项目就是使用jsp+JSTL标签进行开发.可是有几个表的字段都是Clob类型的(因为要往里面存网页)存的时候使用的控件,可是取出来就取不出来了
…
结果我写了一个Tag(自定义标签),但是还是挺麻烦的(毕竟自定义标签不是干这个用的,他是干更高级任务的),最终我想到了EL表达式方法在我的一篇Blog中有介绍[
自定义EL表达式方法
http://tonyaction.blog.51cto.com/227462/42348
]
代码其实很简单,主要是一种技术的应用.下面是代码:
/**
*
*
<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>
本文出自 “绝缘材料” 博客,请务必保留此出处http://tonyaction.blog.51cto.com/227462/42455
本文出自 51CTO.COM技术博客