我和domino不得不说的故事(连载2016-3-2)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我和domino不得不说的故事(连载2016-3-2)相关的知识,希望对你有一定的参考价值。
-
1、关于NotesViewEntry
注意:通过NotesViewEntry获取某列的值时,若该列的值为@IsExpandable or @DocNumber 或者是常量时,将不会显示。
Set entry = view.GetEntryByKey("Sports car", False)
Messagebox entry.ColumnValues(0),, "Column 1"
帮助文档的解释:
A column value is not returned if it is determined by:
-
A formula containing a UI-only function such as @IsExpandable or @DocNumber.
-
A constant.
结论:要多看帮助文档,上面都有。苦逼的新人啊!
-
2、关于在domino中导出Excel
2.1)按照视图导出Excel时,某列常量没有导出来。
解决方法:在常量后面加一个不存在的变量。如:“11”+a; "a"+a
2.2)按照视图导出Excel时,某列数值为编号,前面为0,如021、089等等,却没有显示出来。即导出时丢失了前面的0。
解决方法:代理中写入数据的位置,在数据的左边或右边添加一个 即可。
提示:该代理为domino的lotusscript语言所写,通过table格式所写的excel导出代理。具体的代码,可以在这里看:
-
3、通过java代理从Oracle 11g中取数据,在domino中引入java代理,打印到页面,也可以将这些数据导出到Excel。这个问题以前出过,然后不知道怎么被我调试好了。这次因为电脑奔溃重装了Domino Server,数据是原来的不变,java代理的编码也没变,Eclipse是完全拷贝到机子的,Domino的表单也没变。但是,直接写在代理中的中文,在输出到页面后,通通变成了乱码。
在我将domino 服务端的Domino Server 修改后,从java代理输出到页面的所有数据都成了乱码。
另外,导致js提示也为乱码,究其原因,乃是因为js文件本身编码的问题。因为当前的Domino编码为UTF-8,而这份文件编码却为GB2312。将这份文件转成gbk,复制到记事本中,再将该文件另存为utf-8格式,最后上传替换原来的文件,即可。
最后,我想起打印出来的数据的编码设置,将它从utf-8改为gb2312,从Oracle获取的数据中中文乱码消失。
-
4、有个客户需要从Domino系统通过web Service 接口拿走数据。乍听之下,不知所云。问了做过的同事,一时也未能说清楚。于是,只好向度娘打听打听。可以注意看看文章后面的评论,以及博主的回答,还会另有些收获的。
在Domino85中调用Web Service
http://windindream.blog.163.com/blog/static/4935919201011285263783/
Domino8.5中发布Web Service
http://windindream.blog.163.com/blog/static/493591920101128423493/
需要注意的是:
1、因为客户的接口是用java编写的,在domino designer 通过WSDL文件在web service获取到这些.java。不知是不是domino的问题,在designer端获得的客户.java代码是被编译过的,客户给的方法,全部都变成了.java类。
这个时候,需要在.java文件中找到两个重要的接口。
第一个是,XXXXLocator,以Locator结尾,这个类应该是domino解析时,作为所有方法的总接口。
第二个是,客户通过webService传过来的接口,在WSDL中可以找到。
大家可以通过下面的图了解一下:
1
2
3
|
WebserviceCommonserviceLocator comLoc = new WebserviceCommonserviceLocator(); ICommon ic = comLoc.getCommonImplPort(); ic.方法 |
-
5、关于domino中引用js的问题
js文件在数据库的资源文件中,在html首页内容中引用时,src=‘test.js‘。
在表单中引用,<script type = "text/javascript" src = "test.js"></script>
-
6、如何在domino视图中写html代码。
将代码用[]包住即可。
例如:“[<input name=‘gdCheck‘ type=‘text‘ value=”+unid+"‘></input>]"
-
7、关于Domino数据库中js文件编码的问题
描述:在做项目的时候,将公用的js方法放到js文件里面,方便调用。但是,在进行迁移后,再次对js文件中的js方法进行修改,保存之后,发现应用中调用该方法出错了,该js文件中的方法全部无法调用。
经检查,发现如下情况:
1)修改保存后,再次打开js文件,中文显示为乱码。
2)打开js文件,设置当前文本文件编码为gb2312后,代码显示正常。保存时,会提示编码有问题。(菜单“编辑”-->设置编码-->)
3)将js文件中的内容通过记事本转为utf-8编码,然后复制到,js文件中,问题依旧。
4)将编码为utf-8编码的js文件直接导入,问题依旧。
结论:当前数据库的编码有问题。因为每次只要不对js文件进行改动、保存,那么就不会有乱码的问题。很明显,保存的时候,数据库自动将js文件的编码转换了。找了半天没找到到底在哪里进行修改,通过请教公司高手后,找到了菜单“项目”-->属性-->资源-->文本文件编码,默认为gb18030。
解决方案:
1)首先修改数据库的资源-->文本文件编码,将编码改为utf-8。这样每次保存时,js文件就会为自动变成utf-8编码。
2)将所有的js文件通过记事本,把编码转成utf-8,然后再导入进来。
3)测试。
-
8、通过webService将Domino文档中的附件传送给一个Java系统,结果当在XP环境下的时候没有问题。但是,在AIX环境下的时候报错。
描述:关于这个接口,由我们从OA中提取文档内容(包括附件、正文、域值),然后调用对方提供的方法,将这些内容传送给对方。他们的传送方式是,首先将附件转换成字节流,然后将所有的附件打包成一个对象,作为参数进行传送;而正文则只是转换成字节流,作为参数进行传送;域值则挑选重要的进行传送。结果在XP环境中测试没有问题,开始时报过“OutOfMemoryError”的问题,配置JavaMaxHeapSize以后解决了问题。但是在AIX环境中却总是不行,而且一直在报内存不够的问题。
目前报的错误,如下图:
现在就卡在这里。
这个链接是别人总结的JVM异常处理办法:http://blog.csdn.net/zys5212/article/details/7046066
备注:
目前这个问题已经解决。我们的解决方案是,将附件转成文件流以后,放到集合里面,这样就可以避免出现内存溢出错误。但是,当附件达到100M左右的时候,依旧还是会报内存溢出错误。(JavaMaxHeapSize设置的是1G)
-
9、关于lotus Domino复杂查询
描述:有关Domino查询的资料在网上也能找到一些,我这里主要记录一下复杂查询。复杂查询也就是db.Search(formula)。
formula="form=\"fFaWen\""
数值类型:"& @texttonumber(num)=>"+num2
文本类型:“&@contains("";"")”
日期类型:“&@texttotime(riqi)>[email protected]("2011-09-09")”
-
10、Error: ...‘WAITING FOR READ LOCK ON FRWSEM‘...‘FOR 30000 ms’...
描述:这个问题遇到过两次,前面一次找了很久没找到怎么解决,后面这次似乎在重启Domino Server后提示就没出现。在网上找了下解决方法,如下链接:
在note.ini中增加参数:SCHEDULE_NO_CALCSTATS=1.
http://www-01.ibm.com/support/docview.wss?uid=swg21315806
-
11、登录表单原来是通过action提交的,后来直接通过按钮调用代理提交到后台代理进行处理。但是,发现代理中无法取到当前表单中录入的值。若是默认值,没有问题。
描述:.几经折腾,发现原来是表单的最上方,有一个标签</form>。当调用按钮提交到代理的时候,页面默认<form>以外的内容(包括域)都不属于此次提交的内容。所以,我们在提交的时候,JS显示有内容。但是,代理中根本无法获取最新的域值。
以前的表单可以,主要是因为,他们直接写了一个新的form包裹住了需要提交的内容。而我在修改的时候,不再使用action这种方式,而是以整个表单的形式提交,表单会找到第一个form就会直接进行处理了。
这个</form>之前我是有发现的,但是没有搞清楚它的作用没删除。结果,浪费了大把时间。
以上是关于我和domino不得不说的故事(连载2016-3-2)的主要内容,如果未能解决你的问题,请参考以下文章