在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中,`struts-bean:message`标签是用于处理国际化(i18n)和本地化(l10n)的关键组件,它允许开发者在应用中方便地显示多语言支持的文本。这篇博客文章可能详细解释了如何使用`<bean:message>`标签来实现...
然而,在国际化(I18N)的应用场景下,Struts2资源文件在JSP页面中显示乱码的问题常常困扰着开发者。本文将深入探讨这一问题,并详细介绍两种有效的解决方案。 ### Struts2资源文件与乱码问题 Struts2框架通过资源...
在Struts2中,Tag库是其核心组件之一,极大地简化了视图层的开发,使得开发者可以更方便地创建动态网页。本篇将深入讲解如何在Struts2中使用Tag,以及它们在"HelloWorld"案例中的应用。 1. **Struts2 Tags介绍** ...
此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...
OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以方便地访问对象属性,进行条件判断和算术运算,使得数据操作更加灵活。 **数据校验** Struts2提供了...
值栈是Struts2中的一种数据管理机制,它存储Action、结果和其他对象,方便在Action之间共享数据。 **5.拦截器(Interceptors)** 拦截器是Struts2的一大特色,它们在Action执行前后进行额外处理,如日志记录、权限...
在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...
在Struts2中,Action类是业务逻辑的主要载体,通常继承自`com.opensymphony.xwork2.ActionSupport`或自定义的Action基类。Action类中的方法对应于HTTP请求的URL路径,通过`@Result`注解或在配置文件中定义结果页面。...
在Struts2中,我们通常使用OGNL(Object-Graph Navigation Language)表达式语言来访问Action的属性和方法。例如,可以创建一个`hello-world.jsp`页面,用`<s:property value="message"/>`来显示`HelloWorldAction`...
输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...
通过Struts2的标签库,可以在JSP中引用Action的结果,如`<s:property value="message" />`,这将显示HelloWorldAction中的message属性值。 最后,配置Tomcat服务器,部署我们的Web项目。在MyEclipse中,右键点击...
在Struts2中,Action是业务逻辑的载体,它可以是一个简单的Java类,通过实现`com.opensymphony.xwork2.Action`接口或者继承`org.apache.struts2.interceptor.ActionSupport`类来创建。Action类通常包含多个方法,每...
本实例将向您展示如何在MyEclipse环境中搭建并运行一个基础的Struts2项目。 首先,我们需要了解Struts2的基本架构。Struts2的核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)和结果类型(Results...
在Struts2中,资源文件通常以.properties文件的形式存在,存储在项目的资源目录下。每个资源文件都有一个唯一的名称,例如`messages_zh_CN.properties`表示简体中文版的资源文件,其中包含了特定语言的文本信息。 #...
在Struts2中,`Action`类是核心组件,它负责处理用户请求。在这个例子中,你可能会看到一个名为`HelloWorldAction`的Java类,该类继承自Struts2提供的`ActionSupport`类。`ActionSupport`类提供了基本的错误处理和...
在Struts2中,输入校验是非常重要的一个环节,它确保了从客户端提交的数据符合预期的格式和规则,从而避免了无效或恶意的数据进入系统。 首先,我们来看基于代码的验证。这是在Struts2中最常见的验证方式,特别是在...