Action类的工作机制

来源:互联网 发布:剑网3捏脸数据下载 编辑:程序博客网 时间:2024/05/15 15:38
Action类的工作机制所有的Action类是org.apache.struts.action.Action的子类。Action子类应该覆盖父类的execute方法。当ActionForm Bean被创建,并且表单验证顺利通过后,Struts框架就会调用Action类的execute()方法。execute()方法如下定义:public ActionForward execute(ActionMapping mapping,                             ActionForm form,                             HttpServletRequest request,                             HttpServletResponse response)throws IOException,ServletExceptionexecute()方法包含以下参数:ActionMapping:包含了这个Action的配置信息,和struts-config.xml文件中的<action>元素对应。ActionForm:包含了用户的表单数据,当Struts框架调用execute()方法时,ActionForm中的数据已经通过了表单验证。HttpServletRequest:当前的HTTP请求对象。HttpServletResponse:当前的HTTP响应对象。 
访问封装在MessageResources中的本地化文本
Action类的execute()方法首先获得MessageResources对象:MessageResources messages=getResources(request);在Action类中定义了getResources(HttpServletRequest request)方法,该方法返回当前默认的MessageResources对象,它封装了Resource Bundle中的文本内容。接下来Action类就可以通过MessageResources对象来访问文本内容。例如,如果要读取消息KEY为“hello.jsp.title”对应的文本内容,可以调用MessageResources类的getMessage(String key)方法:String title=messages.getMessage("hello.jsp.title");
业务逻辑验证ActionMessages errors=new ActionMessages();String userName=(String)((HelloForm)form).getUserName();String badUserName="Monster";
if(userName.equalsIgnoreCase(badUserName)){   errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));saveErrors(request,errors);return(new ActionForward(mapping.getInput()));}如果用户输入的姓名“Monster”,将创建包含错误信息的ActionMessage对象,ActionMessage对象被保存岛ActionMessages对象中。接下来调用在Action基类中定义的saveErrors()方法,它负责把ActionMessages对象保存岛request范围内。最后返回ActionForward对象,Struts框架会根据ActionForward对象包含的转发信息把请求转发岛恰当的视图组件,视图组件通过<html:errors>标签把request范围内的ActionMessage对象中包含的错误消息显示出来,提示用户修改错误。
0 0