GWT 2.8版本出来啦,正在学习的伙伴们可以试试哈!
项目中文件上传(导入)功能是很常见的,那么在GWT项目中,如何实现呢?最近刚刚做了这个功能:
核心代码如下:
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Dialog;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
/**
* <pre>
* 导入通用类
* 使用方法:
* 1,继承此类通过super(...) 传入指定参数
* 2,实现uploadResult(msg)方法,msg 表示上传过后的响应结果格式根据后台响应数据进行处理即可
*
* @author CFM
* </pre>
*/
public abstract class ExcelUpload extends Dialog {
String title;
/**
* 实例
* @param title
* @param actionURL
*/
public ExcelUpload(String title,String actionURL) {
setWidth(550);
setHeight(300);
centerInPage();
setIsModal(true);
// setShowFooter(true);
setShowMinimizeButton(false);
//setImage("t_excel", "silk/page_excel.png");
if(null==title||title.equals("")){
setTitle("EXCEL导入");
}else{
setTitle(title);
}
final IButton uploadbutton = new IButton("导入");
final FileUpload fileUpload = new FileUpload();
final FormPanel formpanel = new FormPanel();
fileUpload.setName("uploadFormElement");
formpanel.setEncoding(FormPanel.ENCODING_MULTIPART);
formpanel.setMethod(FormPanel.METHOD_POST);
formpanel.setAction(actionURL);
formpanel.setWidget(fileUpload);
uploadbutton.setIcon("silk/page_go.png");
uploadbutton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent sender) {
if (fileUpload.getFilename().length() == 0) {
SC.warn("请选择您要导入的文件");
return;
}
if (!fileUpload.getFilename().contains(".xls")) {
SC.warn("文件格式不对(必须是excel文件)");
return;
}
formpanel.submit();
}
});
formpanel.addSubmitHandler(new SubmitHandler() {
@Override
public void onSubmit(SubmitEvent event) {
uploadbutton.setTitle("导入中...");
uploadbutton.disable();
}
});
formpanel.addSubmitCompleteHandler(new SubmitCompleteHandler() {
public void onSubmitComplete(SubmitCompleteEvent event) {
destroy();
uploadResult(event.getResults());
}
});
addItem(formpanel);
addItem(uploadbutton);
}
/**
* Fired when a file has been submitted successfully.
* @param rst
*/
public abstract void uploadResult(String rst);
}
继承使用:
public class ExcelImport extends ExcelUpload {
public ExcelImport() {
super("Excel导入","XXX/order/fileupload");
}
@Override
public void uploadResult(String rst) {
SC.say("导入结果:" + rst);
}
}
new ExcelImport().show();
是不是很简单啦。。。收工!