导航系统的所有需求已经实现。经过测试和反馈后,这个问题在开发社区的issue tracker 系统中将被标记为“已解决”(resolved issue)。
标签:项目实施
parameter的使用
在导航系统的编码中,在parameter的使用上走了一点弯路,记之以备忘。
1、不用在request中检查参数是否存在,可以直接把参数值写入url,如果这个参数为null,那么它就以“null”字符串写入url,不会影响程序的正常使用。这可以偷点懒。但是,为了url短点,把无效的参数检测一下,在url中剔除它为最好。
String searchDiaryIDStr = request.getParameter("searchDiaryID");
firstPageStr =
" <a href=\""
+ url
+ ";jsessionid="
+ sessionID
+ "?searchDiaryID=" + searchDiaryIDStr + "&pageNum="
+ firstPage
+ "&naviStr="
+ naviStr
+ "\">首页</a>";
2、同样,在*.jsp文件中也可以这样偷点懒,request中没有这个参数它会处理成空字符串,如:
<html-el:link action="disDiaryContentAction.do?searchDiaryID=${param['searchDiaryID']}&goalID=${aArticleInfo.articleID}&naviStr=${requestScope['naviStr']}" target="diaDisDiary}">
在这里,就用不着用<logic:present></logic:present>或<logic:notPresent></logic:notPresent>来检测“searchDiaryID”在request中是否存在。
基本完成导航系统的编码
实现了我想像中的全部功能,还额外的实现了检索日记的目标内容及所在的目标的日记列表的上一条,下一条的导航功能(这个功能可费了我不少神,不知道到底它有没有用)。
接下来,要实现导航参数如果缺失或者不正确的默认参数,还要实现目标内容和目标的日记列表的互相跳转链接。
提交cvs横向导航中显示帖子的上一和下一条的
导航部分的代码还有日记列表部分的横向导航。相信很快就会完成的。今天太晚了,睡觉了,明天还有下乡。
实现了检索功能的导航模块
继前两天实现了菜单中:“所有目标 您的目标 添加新目标 公告牌”的导航功能。昨天实现了“检索”功能的导航。并且,提交到了cvs库中。至此,前些天思路中的需要列表已经全部实现。但是,还有一些模块的导航是必须的。然后,需要实现“上一条”、“下一条”形式的横向导航。
在导航功能上实现完成后,需要修正一些细节问题,然后把代码进行优化。
疑问:在url中重写sessionID的问题
见:cvs库第二次提交:实现户查看所有目标及其日记导航中:http://www.learndiary.com/disDiaryContentAction.do?goalID=1150
我不知道是怎么一回事?为什么JSP这样设计呢?
cvs库第二次提交:实现户查看所有目标及其日
实现了导航需要列表中的:1:1)~5)导航需求。
1、用户查看所有目标及其日记的导航:含有下列路径:
1)所有目标列表->相关日记列表;(目标ID)
2)所有目标列表->相关日记列表->显示日记内容;(日记ID)
3)所有目标列表->相关日记列表->编辑日记内容;(日记ID)
4)所有目标列表->相关日记列表->显示日记内容->撰写评论;
5)所有目标列表->相关日记列表->显示日记内容->编辑评论;(评论ID)
下面继续实现余下的路径。因为已经开好了头,应该不太难,但也可能会有一些拦路虎意外的出现。不过,That's a piece.
昨天晚上,一个在url中重写sessionID的小问题把我的时间浪费了不少,在jsp中,重写sessionID的格式是如下:
/indexAction.do;jsessionid=aCxWdbpTejYe?pageNum=2
我忘了加上"pageNum"前的"?",结果总是"NullOpiontException",把我搞得焦头烂额。为什么这个jsessionid不像其它参数那样(如:/toWriteDiaryAction.do?typeID=2&goalID=485)在action.do的问号后面呢?我搞不懂。
向cvs库第一次提交改进导航能力的代码
关于导航能力改进的代码,今天向http://learndiary.tigris.org中的cvs库作了第一次代码的提交。页面上基本上没有什么反映。主要在Pager.java中加了两个方法。增加了两个常量类。
学习raorao的PostAdvice0Action.java
我在beforePostArt指的提交文章前的target,当提交文章后,这个target会保存在session
中。当重复提交失败后,页面会定向到beforePostArt所指的target。
因为raorao如果不改定向,提交日记定向的是diarysuccess所指的toSendMailOfGoalAction.do,这个target
提交日记前就已经保留在了session的beforePostArt中。重复提交日记失败后,调用
beforePostArt所指的target,自然就定向到了diarysuccess所指的toSendMailOfGoalAction.do,
就形成了重复发送邮件。
所以,raorao把重复提交日记失败后的target用isBackSubmit重新定向,避免了一般情况下的重复发送邮件。
但由于learndiaryV0.9本身没有彻底解决重复提交问题,在此基础上形成防止重复发送日记的代码在重复提交日记
成功后自然就被绕过了。而这正是学习日记程序设计队现在正在解决的目标之一。
申请暂时离开一下
我这学期的课程马上就结束了,下一周我有四门功课考试。
因此我需要时间复习功课,请大家原谅我在没有完成目标的情况下“逃兵”。
对于没有完成原定目标,首先是自己太懒了,其次自己水平还是很有限。
对以后的发展,我提醒大家一定要相互交流,我想前一段时间停滞,很大程度是因为大家不能很好的交流,其次是源程序的文档不是很完善,增加了大家的难度,这在以后一定要重视。
非常感谢大家给我学习的机会,
我对自己没能完成任务再次向大家道歉,-我一定会记得自己任务的。