`
izuoyan
  • 浏览: 8943679 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

11月25日struts培训日记

阅读更多

今天对struts的一些细节进行了详细讲解:
一个ActionMapping对象对应struts-config.xml文件中的一个<action>元素,读ActionMapping类的API帮助文档,通过各个setter/getter方法,即可了解<action>元素的各个属性的意义。
<action>元素的input属性可以指向一个logon.do这样的url,而不仅限于.jsp页面。
<action>元素的unknown属性的作用
讲解了ForwardAction的应用:
<action parameter="/WEB-INF/jsp/logon.jsp" path="/index" type="org.apache.struts.actions.ForwardAction"/>
<!-- action forward="/WEB-INF/jsp/logon.jsp" path="/index" /-->
通过上面的分析,请学员们回答为什么type属性与forward属性不能同时出现?
讲解了DispatchAction的应用,提问:如果覆盖DispatchAction的execute方法,将有什么效果?
分析了ActionFormBean与ActiornForm之间关系。

讲解了表单校验错误和业务逻辑校验错误的处理流程
1. 请求参数-->ActionForm-->ActionForm.validate-->表单校验错误则返回errors-->logon.jsp-->显示出错误信息
问题:要把errors存储在request中,谁存储的?
2.请求参数-->ActionForm-->ActionForm.validate-->表单校验成功则调用Action.execute方法
-->逻辑校验错误-->产生errors-->回logon.jsp显示错误信息
问题:这时候,谁把erros存储到request中?怎么存?在存储错误时,应该使用request.setAttribute("特殊属性名",erros);存入的属性名是一个固定的特殊名称,这样<html:errors>才能使用这个属性名从请求域中取错误。这个固定的特殊属性名是什么?如果记就太痛苦,那就让saveErrors来帮忙吧。讲课时先演示了直接使用request.setAttribute的情况,然后再使用saveErrors。

错误提示信息和普通信息都用ActionMessage,ActionMessage即代表错误,也代表消息。一个Message本身不是什么错误,只是我们把它的信息当作错误提示信息,还是当作普通信息来看罢了。使用saveErrors储存的ActionMessages对象表示错误,即以Globals.ERROR_KEY作为属性名进行存储,使用saveMessage存储的ActionMessage对象代表普通消息,即以Globals.MESSAGE_KEY作为属性名进行存储。
分析了ActionMessages内部的存储结构,同一字段名可以对应多条ActionMessage,例如:
errors.addMessage("age",new ActionMessage("error.age"));
errors.addMessage("age",new ActionMessage("error.old"));
有一特殊字段名ActionMessages.GLOBAL_MESSAGE,代表全局错误信息。

struts中提供的防止表单重复提交与取消提交的原理与应用。取消操作向Session域中存储一个特殊属性,其他操作在处理过程可以检索这个属性,如果检索到了则执行取消操作。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics