大概从1岁多的那么一天,咪妹有了吮手指的习惯。在这之前,我们认为给她吮安慰奶嘴有害,仅在她睡觉前才给她。这下可好,她不吮奶嘴了,改为吮手指。小孩吮手指有害是早已深入人心的。于是,我们和她就展开戒吮手指的斗争。
首先是用安慰奶嘴哄,失败。
然后是揸猪苦胆,失败。
打手,失败。
用手巾缠在手上,失败,她会慢慢把手巾弄掉,露出任何一根可以吮到的手指,有时还是歪着脑袋的来吮手指。
有时,她要我抱她,我就对以不许吮手指相要挟,当时有效,过后失败。
冬天了,我们准备用给她戴手套的方式来戒她吮手指。今天,我从工地回到家,听她外婆说戴了半天多的手套了,看样子还有效。只不过,下午她睡了觉起来,不停的吵着要把手套拿掉,不得已,她外婆一取下她的手套,她又一刻不放过的吮起手指来。
大家都说,一定要用给她戴手套的方法在这个冬天把她的吮手指的习惯去掉。否则,等过了这个冬天,这个方法又将失败。况且,她又长大了,到时她就会有办法自己把手套弄掉的。
还有,听说,小孩爱吮手指是缺少锌的原因,这还需要多查一些资料。
月份:2004年12月
疑问:struts中条件tag的用法
今天,在写补充邮件系统的时候,碰到这么一个问题:
<c:if test="${requestScope['iSSendDiary']=='sendadvice'}">,
<c:if test="${requestScope['iSSendDiary']==sendadvice}">,
<c:if test="${requestScope['iSSendDiary']==true}">,
<c:if test="${requestScope['iSSendDiary']=='true'}">
这四种用法是不一样的,但我没有这方面的详细资料,这个问题留待以后解决。
为了稳当起见,我在没有弄清这四者的区别时,应尽量使用:
<c:if test="${requestScope['iSSendDiary']=='sendadvice'}">来进行判断。
添加新目标邮件通知之编码
1、因为在显示所有目标的时候会反复使用判断是否订阅的属性,把这个属性保存在session中,在LoginAction.java中得出;
2、看了IndexAction.java的头部注释,来自disall.jsp中的pageNum会被保存在session中,所以在订阅/退订新增目标通知时,不必传递pageNum参数了。
3、在集成了raorao邮件系统的V0.9.0.2.5的基础上所作的改变:
1)、LoginAction.java,已订阅的isOrderNewGoal为true,未订阅为false。添加代码如下:
//test if current user order the notice when someone adding new goal
if (myDB.isSubscribeMail(userInfo.getUserID(), 0))
{
mySession.setAttribute("isOrderNewGoal", "true");
}else{
mySession.setAttribute("isOrderNewGoal", "false");
}
2)、disall.jsp,增加订阅/退订新增目标的链接,已订阅就显示退订,未订阅就显示订阅。中文页面。添加代码如下:
<div align="center">
<c:choose>
<c:when test="${sessionScope['USERINFO'].userID != -1 && sessionScope['isOrderNewGoal'] ==false}">
<html-el:link action="toSubscribeMailAction.do?goalID=0">
当有新增目标请用邮件通知我
</html-el:link>
</c:when>
<c:when test="${sessionScope['USERINFO'].userID != -1 && sessionScope['isOrderNewGoal'] == true}">
<html-el:link action="toCancelMailAction.do?goalID=0">
当有新增目标请不要通知我
</html-el:link>
</c:when>
</c:choose>
</div>
3)、为了增强可理解性,改变raorao修改过的DisGoalContentAction.java,订阅了相应属性为true,否则为false;
4)、改变raorao修改过的disGoalContent.jsp,同3),订阅为true显示退订链接,否则显示订阅链接;
5)、在application.properties中增加了下列内容:
# -- order mail:created by admin at 2004-12-5 20:48:20 --
mail.orderNewGoal =当有新增目标请用邮件通知我
mail.cancelNewGoal =当有新增目标请不要通知我
# -- select after posting goal:created by admin at 2004-12-7 13:01:03 --
afterpostgoal.viewgoal =查看您刚才提交的目标
afterpostgoal.select =提交新目标后的选择:
# -- select after posting advice of goal:created by admin at 2004-12-7 13:01:03 --
afterpostadvice.viewadvice =查看您刚才提交的评论
afterpostadvice.viewallgoal =查看所有目标列表
6)、在struts-config.xml的action path="/toSubscribeMailAction"中和action path="/toCancelMailAction"分别添加了 <forward
name="newGoalSuccess" path="/indexAction.do" />,表示订阅/退阅新增目标通知后的定向是回到原来的“显示所有目标”页面。即为:
<!-- created by raorao at 2004-11-28 21:53:42 -->
<!-- edited by admin at 2004-12-7 9:59:45 -->
<action path="/toSubscribeMailAction"
type="com.learndiary.website.action.disgoal.ToSubscribeMailAction">
<forward name="success" path="/disGoalContentAction.do" />
<forward name="newGoalSuccess" path="/indexAction.do" />
</action>
<!-- created by raorao at 2004-11-28 21:53:42 -->
<!-- edited by admin at 2004-12-7 9:59:45 -->
<action path="/toCancelMailAction"
type="com.learndiary.website.action.disgoal.ToCancelMailAction">
<forward name="success" path="/disGoalContentAction.do" />
<forward name="newGoalSuccess" path="/indexAction.do" />
</action>
因为在session中已有pageNum参数,所以不必传递这个参数;
修改了raorao编辑过的action path="/postAdviceAction", <forward name="goalSuccess" path="/processGoalAction.do" />变为
<forward name="goalSuccess" path="/toSendMailOfGoalAction.do" />;
增加了 <forward name="isBackSubmitGoal" path="/processGoalAction.do?pageNum=1"/>,用于防止重复发送新增目标邮件。
7)、修改了raorao写的ToCancelMailAction.java和ToSubscribeMailAction.java,因为新加了订阅/退订新增目标通知的定向,将原来的return mapping.findForward("success");改为:
if (goalID == 0)
return mapping.findForward("newGoalSuccess");
else
return mapping.findForward("success");
因为会在try块外使用goalID,所以把下列这块代码移到try块以前:
String goalIDStr = request.getParameter("goalID");
int goalID = Integer.parseInt(goalIDStr);
另外,当改变订阅状态后,应该把session里的isOrderNewGoal改变,在ToCancelMailAction.java里加上: if (goalID == 0)
request.getSession().setAttribute("isOrderNewGoal", "false");
在ToSubscribeMailAction.java里加上: //when ordering notice of adding new goal,change the "isOrderNewGoal" attribute value in session
request.getSession().setAttribute("isOrderNewGoal", "true");
8)、在PostAdvice0Action.java和PostAdviceAction.java中增加了生成新目标的内容和防止重复发送新目标的内容:
if (typeID==1){
ArticleInfo articleInfo = new ArticleInfo();
articleInfo.setArticleName(articleName);
articleInfo.setArticleText(articleText);
articleInfo.setArticleResource(articleResource);
request.getSession().setAttribute("articleInfoOfDiary",articleInfo);
request.getSession().setAttribute("MailOfGaol", "0");
request.getSession().setAttribute("typeIDStr", typeIDStr);
}
和:else if (typeID == 1) {
target = "isBackSubmitGoal";
}
在这两个文件中,typeID表示所提交文章的类型,goalID表示所提交文章的父文章(parent)的ID。
9)修改了raorao写的ToSendMailOfThread.java,在方法 public String getGoalName() 中添加了: if (goalID == 0)
return "当有新增目标请用邮件通知我";
还添加了:
else if(typeID==1){
bodyTextBuffer.append(" 添加了如下新目标: \n");
}
10)、修改了raorao写的ToSendMailOfGoalAction.java,添加了如下代码
:else if (typeID==1)
{
request.setAttribute("iSSendDiary","sendgoal");
}
11)、修改raorao写的disUserOfmail.jsp,添加提交并发送新增目标后的选择去向,并添加了一些其它提交后的去向:
<c:when test="${requestScope['iSSendDiary']==sendgoal}">
<html-el:link action="disGoalContentAction.do?goalID=${requestScope['postedArtID']}">
查看您刚才提交的目标
</html-el:link><p>
<html-el:link action="processGoalAction.do?pageNum=1">
撰写日记
</html-el:link>
</c:when>
完成了基于raorao的邮件系统的补充设计编码并
今天是母亲的生日,请假回家给母亲祝贺生日,下午全家人出去耍了半天。并完成了邮件系统的补充设计。
把raorao写的邮件系统加进了www.learndiary.com
昨天,把raorao写的邮件系统加进了www.learndiary.com中。在邮件系统中,我使用服务商提供的企业邮局来
发信,但是多数信件发送不成功,而用申请有免费邮箱反而比较成功。就这个问题在java-cn.com上发帖询问。
我准备在raorao邮件系统的基础上再添加当用户提交一个新目标发送邮件的功能。
这几天服务商java-cn.com更改ip,网站不大稳定,到java-cn.com论坛上发帖询问。
我准备写的邮件系统补充订阅新增目标的设计
为了方便大家在有人添加了一个新目标后可以得到通知,在raorao写的邮件系统基础上,我准备添加当用户提
交一个新目标发送邮件的功能。下面是我的设计思路:
1、订阅和退订新增目标通知在主页上disall.jsp,判断是是否订阅的值在进入disall.jsp之前的
IndexAction.java中得出,利用raorao写的LearnDiaryDB.java中public boolean isSubscribeMail(int
userID,int goalID)来进行;然后把得出的值存在session的属性"isOrderNewGoal"中供用户进入disall.jsp中
使用;
2、当isOrderNewGoal == true时,显示退订的链接;否则显示订阅的链接;
3、订阅新目标通知和退订新目标通知使用raorao写的
com.learndiary.website.action.disgoal.ToSubscribeMailAction;
com.learndiary.website.action.disgoal.ToCancelMailAction
为了在改变订阅状态后页面内容保持不变,应该把当前显示目标的页码保存在request中,当改变订阅状态成功
后,定向到indexAction中,然后显示对应的页面;
4、当用户新增一个目标提交后用raorao写的发送目标下的评论的方式发送邮件。只不过提交日记成功后的定
向是processGoalAction.do。
收到raorao的补充设计,招队长,了解程序设计队
昨天,收到raorao在12月1日发来的订阅邮件系统的补充评论目标后发信的补充设计,邮件系统已经顺利完成,我正在集成进www.learndiary.com中。
因能力有限,无法胜任新版学习日记的需求分析设计队队长一职和编制项目计划书,为了项目的顺利进行,向开发小组成员发出招聘需求分析设计队队长和项目计划书编制者的人选的公开信,并在公告中贴出,这样开发小组以外的朋友也可以来参与。
今天早上,给jw发了一封了解当前程序设计队其余4个目标的进行情况的邮件。我觉得为了加快进度,建议一个目标可以分给多人同时进行,到时可以优先选择和相互补充。尤其是导航系统,我认为应该优先解决。现在的www.learndiary.com的导航系统太不方便了。
希望英语之蜘蛛侠专辑
Here's your change.找你的零钱。
You are getting on my nerves.我开始烦你了。
I have a knack for that.我就有这本事。
butterfingers 笨手笨脚
Shame on you! 你真是无耻!
Any more bright ideas? 你还有什么馊主意?
spider-man 蜘蛛侠
希望英语之超人和蜘蛛侠
hold one's tongue 保持沉默
origin 起源
costume 女装
mask 面具
cloak 斗蓬
adversary 对手
[LDDG(2004)05]学习日记开发小组组织机构名单月
每月更新1次的学习日记组织机构人员名单表,每月18日提交更新。