`

struts2 action中弹出Js脚本提示信息 .

 
阅读更多
第一种:在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>   

分享到:
评论

相关推荐

    struts2如何实现弹出action返回的错误信息

    在Struts2框架中,实现弹出Action返回的错误信息是一项常见的需求,特别是在表单验证、数据处理或业务逻辑执行失败时,向用户反馈错误信息至关重要。本文将深入探讨三种在Struts2中实现这一功能的方法,并对每种方法...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...

    JS调用Struts中的Action

    ### JS调用Struts中的Action #### 背景与概念 在Web开发中,JavaScript(简称JS)作为客户端脚本语言,常被用来增强用户体验、处理表单验证等前端任务。而Struts框架则是Java Web开发中常用的一个MVC(Model-View-...

    org.apache.struts缺少所需包

    import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少

    Struts2中Action接收参数的方法

    Struts2 中 Action 接收参数的方法 Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性...

    Struts2 in action(struts2实战)

    - **Action**:在Struts2中,Action是业务逻辑的载体,负责处理用户请求并返回结果。每个Action对应一个特定的用户操作。 - **Result**:Action执行完毕后,会返回一个Result,定义了页面跳转或数据呈现的方式。 ...

    关于struts2里用javascript刷新window.showModalDialog的父页面

    在Web开发中,尤其是在使用Struts2框架进行项目开发时,我们经常会遇到需要弹出模态对话框(modal dialog)的需求。其中一个常见的场景就是通过`window.showModalDialog`方法打开一个新窗口,并在完成某些操作后刷新...

    基于用户登陆的struts2中action的分类实例

    在Struts2中,Action是核心组件之一,它负责处理用户的请求,并将业务逻辑的结果返回给视图进行展示。本实例将深入探讨在基于用户登录场景下,如何在Struts2中对Action进行分类和设计。 首先,我们需要了解Struts2...

    struts2-showcase.rar

    Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...

    struts2的struts.properties配置文件详解

    6. struts.custom.i18n.resources:这是一个附加的国际化属性文件路径,Struts2将加载这个文件中的国际化信息。 7. struts.custom.properties:这是一个附加的配置文件路径,Struts2将加载这个文件中的设置和参数。...

    struts2 action 返回json方法(一)源码

    本篇将详细讲解如何在Struts2中配置Action来返回JSON响应。 首先,我们需要了解Struts2的Result类型。默认情况下,Action会返回一个JSP页面作为结果,但通过配置,我们可以让Action返回JSON数据。这需要使用到一个...

    Struts 2实战 Struts 2 in action 的中文版

    根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...

    JS控制弹出DIV层窗口控件(divAlert)

    alert功能的扩展版,可以弹出一个以DIV层中元素代码为内容的提示窗口,也可以直接弹出文字信息。 提供了两个JS方法: (1)showAlert(info); 函数说明:info参数可以是字符串信息,也可以是html元素代码。 (2)...

    Struts2 in action中文版+配套源代码

    1. **Action类**:在Struts2中,Action类是业务逻辑的核心,它接收用户请求,执行相关操作,并返回结果。Action类可以被配置在struts.xml文件中,指定其对应的URL和返回的结果类型。 2. **拦截器(Interceptors)**...

    Struts2-057漏洞检测python脚本

    Struts2-057漏洞,也被称为CVE-2017-9805,是Apache Struts2框架中的一个严重安全漏洞。这个漏洞主要出现在Struts2的`Struts2 REST Plugin`中,允许远程攻击者通过恶意构建的HTTP请求头执行任意系统命令,从而对...

    Struts2SpringUnitDemo单元测试

    4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑。Service层封装了与数据库或其他外部资源的交互。在单元测试中,Action的测试主要检查其接收请求、...

    Struts2+Jquery+Ajax

    "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...

    深入浅出Struts2.pdf

    例如,Action中的属性可以直接在JSP中通过OGNL表达式访问。 **五、插件体系** Struts2拥有丰富的插件支持,如Freemarker、Velocity等视图技术的集成,以及i18n国际化、Tiles布局等。 **六、Struts2与Spring的整合...

    struts2.ppt struts2.ppt 我们老师发的PPT

    Struts2是一个流行的Java Web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。它由Apache软件基金会维护,并且是基于XWork框架构建的。在深入讲解Struts2的知识点之前,让我们先了解如何开始一个Struts2...

Global site tag (gtag.js) - Google Analytics