`
Harold_xlp
  • 浏览: 159242 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2中显示message

阅读更多
在struts2.0的action中如何弹出信息提示

 

第一种:在struts2 action中弹出Js脚本提示信息

让action实现ServletResponseAware接口,同时实现其setServletResponse()方法
import org.apache.struts2.interceptor.ServletResponseAware;
public class StudentAction extends ActionSupport implements ServletResponseAware{
     private javax.servlet.http.HttpServletResponse response;

     public String addStudent() throws IOException{
             response.setContentType("text/html;charset=UTF-8");
              response.setCharacterEncoding("UTF-8");//防止弹出的信息出现乱码
             PrintWriter out = response.getWriter();
           studentDAO=new StudentDAO();
          flag=studentDAO.addStudent(stu);
        if(flag){       
                 out.print("<script>alert('添加成功!')</script>");
                 out.print("<script>window.location.href='stuaction.action'</script>");
                 out.flush();
                 out.close();
                 return null;
    }else{
       return "error";
    }
    }

}

// 获得HttpServletResponse对象
public void setServletResponse(HttpServletResponse response) {
   this.response = response;
}
------------------------------------------------------------------------------------------------------------------------------
第二种:把错误信息放入request里面,然后在页面上判断此信息是否存在,存在的话就弹出

最近在用Struts2+Spring+Hibernate主流框架开发项目,其中有部分界面表单提交结果的处理问题,之前一直都是通过struts.xml配置指定的返回页面,在页面上显示出actionMessage,这样感觉不是很好,就想不要页面跳转,点击按钮处理后直接由js来alert()出来,以前没有专门研究过,知道ajax可以实现,但那样每个提交时都要用ajax,太麻烦了,现在把我的实现方式记录下来:

首先,还是传统的Action,一般情况下,我们要返回信息可能会这样写:this.addActionMessage("提交成功!");这里做一点变化,用request.setAttribute("tipMessage", "提交成功!"); (tipMessage是自定义的)。

OK,然后在当前提交的页面里加上如下一段js:
<script type="text/javascript">
var msg="${requestScope.tipMessage}";
if(msg!=""){
alert(msg);
}
</script>
当然了,最后要记住struts.xml里同样要配置<result />的相关信息。
------------------------------------------------------------------------------------------------------------------------------
第三种:
以前我们在action中写类似这样的代码
this.addActionMessage("提交成功!");

页面上:
<s:if test="hasFieldErrors()">  
<s:iterator value="fieldErrors">  
<s:iterator value="value">  
    <script language="JavaScript">  
     alert('<s:property/>');  
    </script>     
</s:iterator>    
</s:iterator>   
</s:if>
这样当有field错误,就会弹出错误提示!当然不alert的话 也可以在外面之间套上div,控制输出格式
但问题来了,如果有多个field错误 就会不断地弹出消息窗口
如何把所有的错误消息全部显示在一个对话框中,每条错误消息占一行显示呢?

经过很长时间的摸索 问题终于给解决了 现在把它分享出来

在需要显示消息的页面加入include来引用message.jsp (或者把message.jsp的内容直接放在要显示消息的页面 )
<s:include value="message.jsp"></s:include>

最好把它放在页面最后 等页面全部加载后 再显示消息,要不然 加在前面的话就可能看到页面空白 消息提示显示完成后才显示页面.

message.jsp代码如下

<%@ page language="java" contentType="text/html; charset=GB18030"     pageEncoding="GB18030"%>  
<%@ taglib prefix="s" uri="/struts-tags"%>  
<html>  
   <body>  
         //fielderror  
    <s:if test="hasFieldErrors()">  
        <s:iterator value="fieldErrors">  
            <s:iterator value="value" status="statu">  
                //field的错误消息是List 因此还需要迭代一次       
                <s:set name="index" value="#statu.index"/>  
                <s:set name="msg" value="#msg==null?'':#msg+  
                value.get(#request.index).toString()+'\\\n'"/>//关键代码  
             </s:iterator>  
        </s:iterator>  
    </s:if>  

         //actionerror  
    <s:if test="hasActionErrors()">  
        <s:iterator value="actionErrors">  
               <script language="JavaScript">  
                alert("<s:property escape="false"/>")  
               </script>  
            </s:iterator>  
    </s:if>  

         //actionmessage  
    <s:if test="hasActionMessages()">  
        <s:iterator value="actionMessages">  
            <script language="JavaScript">  
                alert("<s:property escape="false"/>")  
            </script>  
        </s:iterator>  
     </s:if>  

         //打印转换好格式的fielderror信息  
    <s:if test="#msg.length()>0">  
        <script language="JavaScript">  
            alert("<s:property escape='false' value='#msg'/>")  
        </script>  
    </s:if>  
    </body>  
</html>  

另外还有一种方法直接在script代码中嵌入struts2标签:

view plaincopy to clipboardprint?
struts2.0弹出验证   
<!--用javascript验证 -->   
<s:if test="hasFieldErrors()">   
   <script language="JavaScript">  
     var msg = '';    
     <s:iterator value="fieldErrors">     
       <s:iterator value="value">     
            msg=msg+'<s:property/>'+'\n';   
       </s:iterator>       
     </s:iterator>   
     alert(msg);   
   </script>        
</s:if>   

分享到:
评论

相关推荐

    struts-bean:message使用

    在Struts中,`struts-bean:message`标签是用于处理国际化(i18n)和本地化(l10n)的关键组件,它允许开发者在应用中方便地显示多语言支持的文本。这篇博客文章可能详细解释了如何使用`&lt;bean:message&gt;`标签来实现...

    Struts2资源文件在jsp页面中显示乱码解决

    然而,在国际化(I18N)的应用场景下,Struts2资源文件在JSP页面中显示乱码的问题常常困扰着开发者。本文将深入探讨这一问题,并详细介绍两种有效的解决方案。 ### Struts2资源文件与乱码问题 Struts2框架通过资源...

    Struts2案例翻译篇-Using Struts2 Tag

    在Struts2中,Tag库是其核心组件之一,极大地简化了视图层的开发,使得开发者可以更方便地创建动态网页。本篇将深入讲解如何在Struts2中使用Tag,以及它们在"HelloWorld"案例中的应用。 1. **Struts2 Tags介绍** ...

    struts2ajax项目

    此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以方便地访问对象属性,进行条件判断和算术运算,使得数据操作更加灵活。 **数据校验** Struts2提供了...

    Struts2框架及注释和用法

    值栈是Struts2中的一种数据管理机制,它存储Action、结果和其他对象,方便在Action之间共享数据。 **5.拦截器(Interceptors)** 拦截器是Struts2的一大特色,它们在Action执行前后进行额外处理,如日志记录、权限...

    Struts2中的validation_多国语言版 国际化i18n+struts2数据校验.zip

    在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...

    struts2部分代码

    在Struts2中,Action类是业务逻辑的主要载体,通常继承自`com.opensymphony.xwork2.ActionSupport`或自定义的Action基类。Action类中的方法对应于HTTP请求的URL路径,通过`@Result`注解或在配置文件中定义结果页面。...

    Struts2框架搭建

    在Struts2中,我们通常使用OGNL(Object-Graph Navigation Language)表达式语言来访问Action的属性和方法。例如,可以创建一个`hello-world.jsp`页面,用`&lt;s:property value="message"/&gt;`来显示`HelloWorldAction`...

    Struts2输入校验总结

    输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...

    struts2 helloword工程

    通过Struts2的标签库,可以在JSP中引用Action的结果,如`&lt;s:property value="message" /&gt;`,这将显示HelloWorldAction中的message属性值。 最后,配置Tomcat服务器,部署我们的Web项目。在MyEclipse中,右键点击...

    struts2的基础知识

    在Struts2中,Action是业务逻辑的载体,它可以是一个简单的Java类,通过实现`com.opensymphony.xwork2.Action`接口或者继承`org.apache.struts2.interceptor.ActionSupport`类来创建。Action类通常包含多个方法,每...

    Struts2简单实例

    本实例将向您展示如何在MyEclipse环境中搭建并运行一个基础的Struts2项目。 首先,我们需要了解Struts2的基本架构。Struts2的核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)和结果类型(Results...

    Struts2学习心得

    在Struts2中,资源文件通常以.properties文件的形式存在,存储在项目的资源目录下。每个资源文件都有一个唯一的名称,例如`messages_zh_CN.properties`表示简体中文版的资源文件,其中包含了特定语言的文本信息。 #...

    struts2_HelloWorld代码

    在Struts2中,`Action`类是核心组件,它负责处理用户请求。在这个例子中,你可能会看到一个名为`HelloWorldAction`的Java类,该类继承自Struts2提供的`ActionSupport`类。`ActionSupport`类提供了基本的错误处理和...

    struts2输入校验

    在Struts2中,输入校验是非常重要的一个环节,它确保了从客户端提交的数据符合预期的格式和规则,从而避免了无效或恶意的数据进入系统。 首先,我们来看基于代码的验证。这是在Struts2中最常见的验证方式,特别是在...

Global site tag (gtag.js) - Google Analytics