`
kerry001
  • 浏览: 38245 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在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>    

引自:
http://hi.baidu.com/kaisep/blog/item/df39d6ea51354dd8d439c9f7.html
分享到:
评论

相关推荐

    struts2.0环境配置

    本教程将详细讲解如何在Myeclipse集成开发环境中配置Struts2.0,同时结合JDK1.6和Tomcat6.0服务器来创建一个完整的开发环境。 首先,确保你已经安装了JDK1.6。Java Development Kit (JDK) 是开发和运行Java应用程序...

    struts2.0中文教程

    4. **ValueStack**:值栈是Struts2.0中的数据存储和传递机制,它将请求参数、Action属性、以及页面显示的数据集中在一起,方便在不同组件间共享。 5. **Ognl(Object-Graph Navigation Language)**:OGNL是Struts...

    struts2.0与dwr开发实例

    5. **在Action中调用服务**: 如果需要在Struts2.0的Action中使用DWR服务,可以将DWR的调用封装到Action中,然后通过Action返回的结果驱动页面更新。 6. **在JSP中使用DWR**: 使用生成的JavaScript接口,实现AJAX的...

    Struts2.0做的登陆

    在Struts2.0中,主要通过struts.xml文件进行配置。这里包含了Action的定义、结果映射、拦截器链等信息。例如,为登录功能配置Action可能如下: ```xml &lt;package name="default" namespace="/" extends="struts-...

    Struts2.0-study

    Struts2.0不仅在技术上比其前身Struts1更为先进,而且还提供了更加灵活和强大的功能集。它支持多种编程模型,包括面向对象和面向服务的架构,同时也支持AJAX等现代Web技术。 #### Struts2.0 的发展历程 Struts2的...

    Eclipse struts2.0可视化开发组件

    1. **安装插件:** 在Eclipse中安装该插件,通常可以通过在线市场搜索“Struts2.0可视化开发组件”并安装。 2. **创建项目:** 使用提供的模板创建一个新的Struts2.0项目。 3. **配置组件:** 通过可视化的界面配置...

    struts2.0学习笔记,代码整理

    3. Interceptors:拦截器是Struts2.0的核心特性,用于在Action执行前后插入自定义逻辑,如日志记录、权限验证等。 4. ValueStack:存储Action中的属性值,方便在视图层访问。 5. OGNL(Object-Graph Navigation ...

    Struts2.0登陆验证代码

    Struts2.0引入了拦截器(Interceptors)的概念,这些拦截器可以在Action执行前后进行预处理和后处理,如登录验证、权限检查等。此外,Struts2.0使用OGNL(Object-Graph Navigation Language)作为表达式语言,使得...

    struts2.0登陆例子

    Struts2.0是一个强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,提供了丰富的功能和灵活的配置选项,极大地简化了企业级应用的开发流程。这个"struts2.0登陆例子"项目是学习和理解...

    netbean的struts2.0插件

    在标签中,“netbeans”和“struts2.0”进一步明确了这个插件的功能,即它是针对NetBeans IDE和Struts2框架的整合工具。 压缩包子文件的文件名列表展示了该插件的不同版本。例如: - `org-netbeans-modules-web-...

    NetBeans7.0 Struts2.0最新插件

    此“NetBeans7.0 Struts2.0最新插件”提供了对Struts2.0框架的强大支持,以增强NetBeans 7.0 IDE的功能。 该插件包含四个nbm(NetBeans Module)文件,分别是: 1. org-netbeans-modules-web-frameworks-struts2...

    都市供求信息网源码Struts2.0+Sqlserver2000

    总的来说,"都市供求信息网源码"项目为Java开发者提供了一个理想的实践平台,通过研究源码,不仅能够掌握Struts2.0与Sqlserver2000的整合应用,还能提升在Web开发中的综合能力。对于想要在JavaEE领域深耕的程序员来...

    Struts2.0入門學習(繁體)

    在学习Struts2.0的过程中,你需要理解以下几个关键知识点: 1. **MVC模式**:Struts2是基于Model-View-Controller设计模式的,这种模式将业务逻辑、数据表示和用户界面分离,使代码更易于维护和扩展。 2. **Action...

    STRUTS2.0开发实例

    在这个"STRUTS2.0开发实例"中,我们将探讨如何利用JBuilder2008进行Struts2应用的开发。 首先,我们来看`AddCompany.jsp`和`AddCompany2.jsp`。这两个文件是Struts2中的视图组件,通常用于展示用户界面。`...

    STRUTS2.0例子中的简单登录

    这个例子"STRUTS2.0例子中的简单登录"旨在展示如何在Struts2.0框架下实现一个基本的用户登录功能。通过这个例子,我们可以学习到Struts2的核心概念、配置以及动作映射等关键知识点。 首先,Struts2框架是基于Model-...

    struts2.0_简介标签库

    在Struts2.0中,一个重要的变化是它对标签库的支持更加丰富和强大,这使得开发者可以更方便地进行Web应用的开发。 #### 二、Struts2.0标签库介绍 Struts2.0的标签库提供了一系列用于简化页面开发的标签,这些标签...

    Struts2.0开发的登录用户

    Struts2.0是一个强大的Java Web应用程序框架,它在MVC(Model-View-Controller)设计模式的基础上提供了灵活的架构,使得开发者可以高效地构建动态Web应用。本项目是基于Struts2.0开发的一个登录用户系统,让我们...

    struts2.0上传文件

    Struts2.0是Apache软件基金会的一个开源框架,主要用于构建基于Java的企业级Web应用程序。在Struts2中,实现文件上传是一项常见的需求,这通常涉及到处理用户通过表单提交的多部分请求(multipart/form-data)。文件...

Global site tag (gtag.js) - Google Analytics