Domino的开发是一件很琐碎的事。而且很多时候因为它自身的一些限制,有的普通的问题,也需要独辟蹊径来解决。有时候一点小的死疙瘩能把人熬死。
不过,熬有时候也是一件有意义的事,熬的过程就是学习、提高的过程。在经历了诸多的思虑、实践和折腾后,最后柳暗花明时的解决方案有时往往其实很简单。不过我并不因此否定自己之前的工作,因为,对于公司来说,结果可能是最重要的,而对于我来说,恰恰相反,过程是最重要的。我的几乎所有收获都是来源于解决问题的过程中,解决问题时的畅快,只是一时的快意罢了。
所以,尽管最后的解决方案很简单,但我还是想把这个解决问题的过程记录下来。我想事后整理解决问题中曾经的思路也是件有意义的事,混沌过去,很快就会忘记这其中宝贵的点滴。不注重积累,必然导致不可弥补的遗憾。
解决问题的过程常让我们觉得有一点痛苦,但其间的充实感和成就感足以冲散这种痛苦的感觉。在这个浮躁的社会,做成一件事似乎已经变得越来越稀罕,哪怕是小事。大家更习惯敷衍了事表面工作。少了认真和责任感,随之而来的就是少了成就感和自豪感。现在的我,有了不错的平台,一切走入了正轨,努力地叫自己一件事一件事地去认真做成,不管大事小事。通过自己的努力做成事情的感觉真好。
前几次解决问题都没有做总结和记录,感觉有点遗憾。现在只能凭记忆简单写下来了。首先是完成了搜索功能的开发,然后就测试组的反馈修改一些bug。
(1)中文乱码问题:解决这个问题的心得是要找对思路下手,还有要多问同事,可以从他们那里得到灵感和启发,同时也不能偏信。这次因为偏信别人的经验,耽搁了不少时间。
问题描述:根据Domino表单中用户指定的搜索条件到特定服务器搜索文档。解析特定服务器返回的xml结果得到相关文档。
解决过程:用自己写的函数getValueFromXML("xxxx",yyyyy);取相关字符串,中文的时候取到的事一堆乱码。由于受到误导,以为domino本身的dom不能用,尝试了各种各样的编码解码方法,费尽周折,最后还是用domino的dom解决的。如下:
File file = new File("c://Archivesearch.xml");
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(result);
writer.close();
final String resultxmlpath ="c://Archivesearch.xml";
com.ibm.xml.parsers.DOMParser parser = new com.ibm.xml.parsers.DOMParser();
parser.parse(resultxmlpath);
org.w3c.dom.Document dom = parser.getDocument();
org.w3c.dom.Node node;
org.w3c.dom.Node childnode;
org.w3c.dom.NodeList nodelist;
……
i=0;
nodelist = dom.getElementsByTagName("subject");
……
while(……){
node = nodelist.item(i);
childnode = node.getFirstChild();
subject=childnode.getNodeValue();
i=i+1;
……
}
这其中,有一点要注意,一定是getnodevalue,不然得不到期望的结果。
中间还有一个插曲是,找不到DOMParser包。还好,在6版本下,有DOMParser包,到7下面才出问题的。不然对于我这个半新手来说,又是无底深渊了。
找不到DOMParser包,就查看这个包的位置,还有7版本和6版本包的不同,最后尝试部署在服务器,导入,失败。最后在同事的提点下,直接在java代理中通过"编辑项目"加入了包xml4J相关的包,这个问题才算完。
(2)javascript时间控件.
Domino自身的时间域在web下不可用,得自己搞一套,这让我有点冒冷汗。不过以俺的聪明才智加上网上丰富的资源,最后还是完美解决了。
最后的时间控件是鼠标滑到选择时间的标签上,就弹出来日历供用户选择,还算优美。
不过缺省时间设置我不太满意,同事说没关系,就那样,就先放了放,有空还是希望能够调一下好一点。
这个问题解决的过程最让我痛苦的是明明有的域,却死活找不到。好一番折腾啊,还是自己javascript经验不够丰富所致。在javascript中写的input域名,只是一个标签而以,并不产生真正的域。而表单中应有一个同名域与其对应,而我却担心冲突,特意把表单中的域命名得和它不一致。哎,事后觉得要是我当时粗心该多好啊,哈哈。不过如果粗心侥幸过关的话,也就不会有这样的收获了。
(3)base64编码。