`
啸笑天
  • 浏览: 3465876 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

[摘]actionMessages(),actionError()介绍

阅读更多

转自http://linweihan.iteye.com/blog/122440

actionMessages(),actionError()介绍 

尽管Struts框架提供了有效的异常处理机制,但不能保证处理所有的错误,这时Struts框架会把错误抛给Web容器,在默认情况下Web容器会向用户浏览器直接返回原始信息。如果想避免直接让用户看到这些原始信息,可以在web.xml中配置<error-page>元素,以下代码演示了如何避免用户看到HTTP 404、HTTP 500错误和Exception异常。 

web.xml: 
  <error-page> 
    <error-code>404</error-code> 
    <location>/exception/error404.jsp</location> 
  </error-page> 
  <error-page> 
    <error-code>500</error-code> 
    <location>/exception/error500.jsp</location> 
  </error-page> 
  <error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>/exception/default.jsp</location> 
  </error-page> 
当WEB容器捕获到exception-type或error-code指定的错误时将跳到由location指定的页面。 


 ActionError/ActionErrors/ActionMessage/ActionMessages: 

有时候你需要向用户提供相关处理信息,包括表单验证时发现错误等。 
1. 相关类介绍: 
ActionMessage:用于保存一个与资源束对应的提示信息。主要构造函数如: 
ActionMessage(String message); 
ActionMessage(String message,paramater)。 

ActionMessages:用于保存多个ActionMessage。并在html:errors 和html:messages中起作用。 
主要构造函数: 
ActionMessages(). 
主要方法是add(String property,ActionMessage message) 
ActionMessages有一个HashMap类型messages保存多个ActionMessage对象,每个ActionMessage对象都有唯一的一个property标识。这个property可以是自定义的任意字符串,也可以由org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定 
html:messages/html:errors使用property属性访问某个资源 

ActionErrors:用于保存一个与资源束对应的错误信息。用法跟ActionMessages差不多。 
ActionError不赞成使用。 


2. 版本: 
struts1.1中用ActionErrors报告错误,用ActionMessages提供信息。 
在struts1.2中使用ActionMessages提供信息和错误,不赞成使用ActionError 
struts1.3中已经没有ActionError类了。 


3. AtionErrors和ActionMessages的区别 

1. ActionErrors是ActionMessages的一个子类,功能几乎相同,不同点在于标签<html:errors/>和<html:messages>的使用上的区别。 
html:errors指定了footer和header属性。默认值为errors.header和errors.footer,需要时可以自己指定。如果资源属性文件配置了 errors.header和errors.footer,则任何时候使用html:errors时开头和结尾都是这两个属性对应的资源信息。 
而html:message默认情况下没有errors.header和errors.footer值,当然可以自己指定。 

2. html:errors可以根据property属性指定显示一个错误信息。html:messages有一个必添项id。html:messages不能直接显示信息,它将选出的信息放入一个用id标识的Iterator对象里,然后在用ben:write或JSTL c:out标签显示每个信息.例如: 
<html:messages message="true" id="msg"> 
    <c:out value="${msg}"/><br /> 
</html:messages> 

3. 具体的一个例子: 
接受输入页面input.jsp: 

  <html:form action="/errormessage/input"> 
    phoneNumber : <html:text property="phoneNumber"/> <html:errors     property="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>"/><br/> 
  <html:submit/><html:cancel/> 
  </html:form> 

struts-config.xml: 
  <form-beans > 
    <form-bean name="inputForm" type="cn.rolia.struts.form.errorexception.InputForm" /> 
  </form-beans> 
  <action-mappings > 
    <action 
      attribute="inputForm" 
      input="/errormessage/input.jsp" 
      name="inputForm" 
      path="/errormessage/input" 
      scope="request" 
      type="com.yourcompany.struts.action.errormessage.InputAction" 
      validate="false"> 
      <forward name="success" path="/errormessage/success.jsp" /> 
    </action> 
  </action-mappings> 

InputAction.java: 

public ActionForward execute(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 
  cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub 
  String phoneNumber = inputForm.getPhoneNumber(); 
  if(phoneNumber.length()<4){ 
  ActionErrors messages = new ActionErrors(); 
    messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
    this.saveErrors(request, messages); 
    return mapping.getInputForward(); 
  } 

  return mapping.findForward("success"); 

解说:用户输入手机号码,页面跳转到InputAction控制层进行处理,若输入数据小于4,则创建一个ActionMessage类存储相关错误信息。然后再创建ActionErrors类将此ActionMessage放入ActionErrors。再调用Action的saveErrors方法将此ActionErrors保存的request范围里,然后返回input.jsp页面要求重新输入并用html:errors提示错误信息。 

4. Action包含saveErrors()方法和saveMessages()方法。如果创建的ActionErrors则应该调用saveErrors(),若创建的是ActionMessages则应该调用saveMessages()方法。 
saveErrors()接收ActionMessages而不是ActionErrors;同时将其保存在request中并用一个由org.apache.struts.Globals.ERROR_KEY指定的常量” org.apache.struts.Globals.ERROR_KEY”标识这个ActionMessages,便于html:errors查找。saveMessages()方法接收ActionMessages同时将其保存在request中并用一个由org.apache.struts.Globals.MESSAGE_KEY指定的常量” org.apache.struts.Globals.MESSAGE_KEY”标识这个ActionMessages,进而让html:messages从常量Globals.ERROR_KEY中遍历获取信息。可以将其属性message设置为true,那么它将从常量Globals.MESSAGE_KEY中遍历获取信息。 

5. 默认情况下html:messages从 
如果你想将信息保存在session里而不是request,struts1.2提供了 
struts1.1没有的saveMessages(HttpSession session, ActionMessages messages)方法和saveErrors(javax.servlet.http.HttpSession session, ActionMessages errors)方法。 
InputAction.java: 

public ActionForward execute(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub 
  String phoneNumber = inputForm.getPhoneNumber(); 
  if(phoneNumber.length()<4){ 
    ActionErrors messages = new ActionErrors(); 
    messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
    this.saveErrors(request.getSession(true), messages); 
    return mapping.getInputForward(); 
  } 

  return mapping.findForward("success"); 

分享到:
评论

相关推荐

    Struts2&ActionError&ActionMessage&Demo

    4. **显示错误和消息**:在JSP页面中,使用Struts2的标签库(如`s:actionerror`和`s:actionmessage`)来遍历并显示`ActionContext`中的`ActionErrors`和`ActionMessages`。 ```jsp ()"&gt; &lt;s:actionerror/&gt; ()"&gt; ...

    Struts2-ActionError-ActionMessage-Example

    在Struts2框架中,ActionError和ActionMessage是处理用户输入验证和错误反馈的重要组件,它们使得开发者能够优雅地管理应用程序中的错误信息和用户消息。 ActionError类是用来存储错误信息的,它继承自`java.lang....

    Struts架构和标签库介绍

    Struts提供了ActionError和ActionMessages类用于错误和消息的处理。这些类可以帮助开发者更好地管理和显示错误信息,增强用户体验。 #### 三、Struts标签库 Struts提供了丰富的自定义标签库,用于简化页面开发,...

    struts2数据验证与国际化

    `ActionErrors`是一个集合,可以存储多个`ActionError`对象,每个`ActionError`代表一条具体的错误消息。例如,如果用户没有输入第二个数字,可以通过`errors.add()`方法将错误信息添加到`ActionErrors`中。 在...

    Struts记录整理文档

    在Action中,使用`saveErrors(HttpServletRequest, ActionErrors)`或`saveMessages(HttpServletRequest, ActionMessages)`方法将错误或消息保存到请求范围内,以便在JSP页面中访问。在JSP页面,使用相应的标签从...

    Struts 1.3.8 学习笔记(六)

    例如,通过资源包(Resource Bundle)实现多语言支持,通过 ActionError 和 ActionMessages 实现错误和消息管理,通过 FileUpload 类处理文件上传。 在实际开发中,为了更好地理解和使用 Struts 1.3.8,我们需要...

    StrutsInAction中文

    8. **异常处理**:学习如何在Struts中配置全局和局部异常处理策略,使用ActionError和ActionMessages管理错误和消息。 9. **Tiles框架集成**:Struts可以与Tiles框架结合使用,实现更复杂的页面布局和组件重用。 ...

    struts1开发库

    8. **异常处理**:Struts1提供了ActionError和ActionMessages机制来处理错误和消息。开发者可以在Action中抛出异常,框架会捕获并显示给用户,确保应用程序的健壮性。 9. **验证框架**:通过Validator插件,Struts1...

    Struts 1.1 API.zip

    8. **异常处理**:Struts 1.1提供了ActionError和ActionMessages机制,用于处理和展示业务逻辑中的异常信息。开发者可以通过配置ActionMapping中的`exception`元素来定义全局或特定异常的处理策略。 9. ** Tiles...

    struts1+jsp登录注册全部代码 连接sqlserver2008数据库

    这可以通过Struts的ActionError和ActionMessages实现,将错误信息添加到ActionContext中,然后在JSP页面上显示。 总的来说,这个项目涵盖了Struts1的MVC架构、JSP页面设计、数据库连接、用户输入验证、业务逻辑处理...

    struts_crud源码

    - Struts提供了全局的异常处理机制,可以自定义ActionError和ActionMessages,用于处理和显示业务错误。 8. **国际化与本地化** - 使用ResourceBundle和struts.properties文件实现应用的多语言支持。 9. **测试*...

    struts技术实现留言功能

    Struts提供了ActionError和ActionMessages机制来处理验证错误,以及全局的异常处理器来捕获并处理程序运行时可能出现的异常。 总结来说,使用Struts技术实现留言和发帖功能,主要包括以下几个步骤: 1. 创建Action...

    struts课件ppt

    8. **异常处理**:Struts提供了ActionError和ActionMessages机制,用于处理业务逻辑中的异常,并将错误信息展示给用户。 通过刘晓华老师的课件,你可以系统地学习如何使用Struts框架进行Web应用开发,掌握Bean标签...

    struts国际化功能

    3. 在Action中使用`ActionMessages`或`ActionErrors`添加和显示消息。 4. 在JSP中使用Struts标签显示本地化消息。 5. 实现语言切换功能,动态改变资源文件的加载。 通过这些步骤,开发者可以轻松地为SSH框架的Web...

    Java Struts 教程

    Struts提供了ActionError和ActionMessages机制来处理异常,可以将错误信息传递到视图进行显示,增强了错误处理的能力。 9. **Struts 1与Struts 2的区别** Struts 2是Struts 1的升级版,引入了更多现代Web开发的...

    Struts1做的增删改查

    - Struts1提供了ActionError和ActionMessages机制来处理用户输入验证错误,可以通过配置文件定义全局错误页面,提高应用的健壮性。 8. **国际化和本地化**: - Struts1支持多语言,可以在资源文件中定义不同语言...

    Struts API官方英文版

    8. **异常处理**:Struts提供了ActionError和ActionMessages,用于处理应用程序中的错误和消息。全局异常处理器可以捕获并统一处理未被捕获的异常。 9. **Struts标签库**:除了基本的HTML标签,Struts还提供了一套...

    Strutssource源码

    8. **异常处理**:在`org.apache.struts.action`包下,可以看到ActionError和ActionMessages类,它们用于处理和展示应用程序运行时的错误信息。Struts框架提供了一套完整的异常处理机制,可以在struts-config.xml中...

    struts写的上传下载

    在Struts中,可以通过`ActionError`或`ActionMessages`来添加错误信息,然后在JSP页面上显示。 总的来说,这个"struts写的上传下载"项目展示了如何利用Struts框架处理文件上传和下载的基本流程,同时也提醒我们在...

Global site tag (gtag.js) - Google Analytics