第一种:在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-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
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文件上传中的struts.multipart.saveDir提示信息,是没有设置struts2上传的临时文件夹造成的,下面说了两种设置的方法
JS调用Struts中的ActionJS调用Struts中的ActionJS调用Struts中的Action
Struts 2实战 struts2 in Action
Struts2漏洞检查工具Struts2.2019.V2.3
Struts2 in action 中文版.zip 经典的Struts2图书
Namespace、自定义Action、路径问题、通配符、包含模块配置文件、默认Action、接受用户输入、服务器跳转、Action中访问web元素、简单数据校验、调用Action的自定义方法 5struts2国际化 ......... 6 struts2输入校验...
struts2一个action处理多个请求
struts2对action中的所有方法进行校验
从jsp页面提交form表单后,在struts.xml中寻找匹配的action。在action中处理完业务后返回,在struts.xml中的result属性中转向到另外一个action。
Struts2 Action参数详细说明,很有用的。
测试struts2中的action
Struts2中struts_xml的Action配置详解
javascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值.docjavascript中读取Struts2标签datetimepicker的值....
Struts2 in action 中文版
js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action
Struts2中Action接收参数的方法
如果你想自学struts2,此文档是很好的自学宝典,经典struts2 in Action,能帮你建立整体的struts2思想,你还在犹豫什么