本帖最后由 bess 于 2012-12-10 10:48 编辑
Q: 问题描述:
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addStringItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);
如果newdoc对象StringItem属性设置长度超过255个中文字符。在存储数据库的时候会自动截取只留255个中文字符。
例如上面的代码。如果"考核标准"设置过长,超过255个中文字符。就回自动截取只剩下前255个中文字符。
问题原因:
我查到在源码中Item.java类中的getVarcharvalue() 对字符窜长度进行了截取。如下:
/**
* :
* @return
* @uml.property name="varcharvalue"
*/
public String getVarcharvalue() {
if (getType().equals(VALUE_TYPE_VARCHAR)) {
if (varcharvalue != null && varcharvalue.length() > 255) {
return varcharvalue.substring(0, 255);
} else {
return varcharvalue;
}
} else if (getType().equals(VALUE_TYPE_NUMBER)) {
Double num = getNumbervalue();
return num != null ? DECIMAL_FORMAT.format(num) : "";
} else if (getType().equals(VALUE_TYPE_DATE)) {
Date dt = getDatevalue();
if (dt != null) {
return DATE_FORMAT.format(dt);
}
} else if (getType().equals(VALUE_TYPE_TEXT)) {
return getTextvalue();
}
return null;
}
解决方法提问:
1、平台getVarcharvalue() 方法为什么对字符窜长度进行了截取?
2、我这边的软件只连接sql或oracle。如果想把截取改长。最长能改为多少?
A:您好,您好如下代码改为:
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addStringItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);
应该用
var newdoc = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
newdoc.addTextItem("考核标准",doc1.getItemValueAsString("考核标准"));
process.doCreate(newdoc);
原帖子作者 zyzma 原帖子链接:
http://www.teemlink.com/bbs/view ... 26amp%3Btypeid%3D12 |