此前的一篇文章介绍了xheditor使用servlet实现上传的接口,但在Struts2的应用中由于Struts2封装了request和response使得,此前写的程序无法获取数据。可能通过一些修改可以另前面的程序继续使用,但是我这里介绍一种完全使用Struts2标准的xheditor配置方法。其实这个方法在xheditor的官方论坛有讲过,但是由于讲述并不清楚,可能对于一些新手使用并不方便,我这里结合我使用的方法,整理出来代码供大家参考。
1、首先是在textarea中配置class
class=“xheditor {skin:'o2007blue',html5Upload:false,upMultiple:'1',upImgUrl:'Upload.do',upImgExt:'jpg,jpeg,gif,bmp,png',upLinkUrl:'Upload.do',upLinkExt:'zip,rar,txt,docx,doc,xls,xlsx,pdf'}"
注意到我这里的上传的Action是Upload.do
2、接着下来配置Struts.xml来解析配置
<action name="Upload" class="com.webapp.action.XheditorUploadAction" method="uploadPicture"> <result> /SuccessUpload.jsp </result> </action>
这个xml配置主要是做一些简单的返回,最后我会具体的写明白返回的jsp应该怎么写
3、这步就主要编写Upload的Action
package com.webapp.action;
import java.awt.Image;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.commons.io.FileUtils;
public class XheditorUploadAction extends PersonCommonAction {
private File filedata;
private String filedataContentType;
private String filedataFileName;
private String err;
private String msg;
private String message;
private String fileExt = "jpg,jpeg,gif,bmp,png";
public String uploadPicture() throws Exception {
String saveRealFilePath = getSession().getServletContext().getRealPath("/") + "resources/XheditorUpload/" ;
File fileDir = new File(saveRealFilePath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
File savefile;
savefile = new File(saveRealFilePath + filedataFileName);
FileUtils.copyFile(filedata,savefile);
msg = "resources/XheditorUpload/" + filedataFileName;
err="";
printInfo( err, msg);
return SUCCESS;
}
public void printInfo(String err,String newFileName) {
message = "{\"err\":\"" + err + "\",\"msg\":\"" + newFileName
+ "\"}";
}
public String uploadJsp()
{
return SUCCESS;
}
public File getFiledata() {
return filedata;
}
public void setFiledata(File filedata) {
this.filedata = filedata;
}
public String getFiledataContentType() {
return filedataContentType;
}
public void setFiledataContentType(String filedataContentType) {
this.filedataContentType = filedataContentType;
}
public String getFiledataFileName() {
return filedataFileName;
}
public void setFiledataFileName(String filedataFileName) {
this.filedataFileName = filedataFileName;
}
public String getErr() {
return err;
}
public void setErr(String err) {
this.err = err;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
这里重点理解的是filedata,因为xheditor会把filedata的值写到值栈里边,而Struts2会自动获取这个值
4、接着是SuccessUpload.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="message" escape="false"/>
这个很简单,就在jsp页面里边写两行就可以了,其实这里是把message的值打印出来,返回给xheditor而已