ajax struts2 action 页面无刷新返回结果
最近做项目遇到的问题 用form提交 返回页面要不 跳转 要不刷新 可是我不想刷新页面
之前想用ajax 纠结了很久 发现ajax提交文件 action根本接收不到。网上搜了些资料总结了一个最简单的方法分享一下:
html:
<form action="" name="upfile_form" encType="multipart/form-data" method="post" > <input type="text" name="fileName" /> <input type="file" name="upload" id="upload_file" onchange="checkFileSize('upfile_form','check_file_frame','/项目名/pack/fileupload.action',this);" /> <p> <input type="submit" value="submit" /> </p> <iframe name="check_file_frame" src="successful.jsp"></iframe> </form>
js:
/** * checkFileSize 可以实现异步提交 不刷新页面 * @param formName 表单名 String * @param targetIframeName 返回页面的iframe框 String * @param actionName action路径 完整的 String * @param fileObj 当前文件 一般写为:this * @return */ function checkFileSize(formName,targetIframeName,actionName,fileObj) { var fileForm = new Object(); if(fileObj.value != "") { var form = document.forms[formName]; //把form的原始数据缓存起来 fileForm.f = form; fileForm.a = form.getAttribute("action"); //form.action 为一个静态的对象,所以这里要使用getAttribute方法取值 fileForm.t = form.target; //请求服务器端 form.target = targetIframeName; form.action = actionName; form.submit();// 其实上面的action已经会执行submit操作,这步可有可无 } return false; }
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="pack" namespace="/pack" extends="struts-default"> <action name="fileupload" class="pack.Fileupload" method="execute"> <result>successful.jsp</result> </action> </package> </struts>
Fileupload.java
import java.io.File; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class Fileupload extends ActionSupport { private File upload; // 执行Action的Method功能 private String fileName; // 上传文件的文件名 private String attachmentContentType; // 上传文件的类型 public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getAttachmentContentType() { return attachmentContentType; } public void setAttachmentContentType(String attachmentContentType) { this.attachmentContentType = attachmentContentType; } public String execute() throws Exception { System.out.println(fileName); String dataDir = "e:\\file";// 上传文件存放的目录 File savedFile = new File(dataDir, fileName);// 上传文件在服务器具体的位置 upload.renameTo(savedFile);// 将上传文件从临时文件复制到指定文件 HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("a", "aa"); request.setAttribute("b", "bb"); return SUCCESS; } }
这里只是简单地实现功能。successful.jsp可以通过parent.函数名 调用父类函数实现函数回调 轻松控制两个页面。
因为是调用函数 所以不用提交按钮也可以 这样就实现了不用刷新页面。
相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05