DLBBS工作总结

① 列表页面
当数据库没数据时列表页面展现正常,有数据时出错。
原因:
因为在DAO中数据字段映射的时候,没有让addField的字段和getSearchSQL中的一致
如果字段前都加了表名,全部加表名。都加了模式名,全部加模式名。
否则会出现获取的对象字段全部为null的现象。

还有一点:在JSP页面获取vo的信息时,如果调用了一个subString(0,19)方法,且这个Vo获取的信息为null,那么会出现栈溢出,导致页面异常无法显示。
如:
有一个字段是发布时间,前台获取到List后循环遍历得到vo
然后articleVO.getArticleTime().toString().substring(0, 19).
此时,如果取得的时间为null,那么就相当于是null.toString().如果只是这里出错,那么只会出现空指针错误
但是又调用了一个substring(0, 19)方法,所以会导致栈溢出。


② 详情页面
出错提示信息:org.apache.jasper.JasperException: Exception in JSP: /jsp/show/showResourceDetail.jsp:112
109:   for (int j = 0; j < attechList.size(); j++) {
110:   %>
111:   <%
112:   TArtAttechNewVO avo = (TArtAttechNewVO) attechList.get(j);
113:   %>

java.lang.ClassCastException: com.icss.oa.show.vo.TArtAttachSearchVO

原因:VO不一致
在后台获取附件的VO是TArtAttachSearchVO。而在前台获取附件信息的时候,实例化的却是TArtAttechNewVO。
VO不一致,导致JSP页面出错,因此错误代码定位到实例化TArtAttechNewVO这块。
所以记住:一般出错为定位到某个VO,很大原因是因为前后台的VO不一致。


出错2:点击进入之后,发现把所有的附件全部列出来了。

分析:点击超链接后  控制台有一条sql语句
发现sql语句中没有加上T_ARTICLE.ARTICLE_ID LIKE '某个articleId' 这个查询条件     
然后查看servlet  发现已经setArticleId()了
那么再查看DAO 发现错误点:没有设置查询子条件

解决:在对应的DAO里面把where子句的条件加上

 if(articleId!=null && articleId !="" ) {
         sql.append(" AND  T_ARTICLE.ARTICLE_ID LIKE '%" + articleId + "%' ");
        }
  
  
③ 删除功能  
删除的功能错误是因为:
1)在我们的平台不能直接删除SearchVO。所以要分两步删除,第一步:根据获取的文章ID删除文章表里的文章信息。第二步:根据获取的附件ID删除附件表里的附件信息。
2)执行删除方法之后要指定disk并跳转回列表页面[创建时也一样]。


④ 分页功能
分页:是代码里自己实现的,pageNum*20  其中20 是指每页行数
为了和平台一致,修改为13即可。


⑤ 下载功能
下载功能不成功是因为:因为通过SearchVO和SearchDAO来找寻要下载的附件,而这样是无法找到相应的附件的,所以下载出错。
解决:因为在新建资源的时候是先新建文章,再新建资源的。所以直接查找附件信息表就可以查找出当前附件了,这样就可以下载了。
把相应的SearchDAO换成TArtAttechDAO,把SearchVO换成TArtAttechDVO即可。

总结
这次我最大的收获是学会了调试程序。
看看调试时打印出的变量是否是逻辑上应该获取到的结果。如果不是,是哪一步出错了。
特别是出现空指针的时候,更应该调试下程序,看下是因为哪一个变量为空导致的。

 

 

 

posted @ 2013-03-29 09:46  Aviva_ye  阅读(225)  评论(0编辑  收藏  举报