DWZ文件上傳表單提交

2018-11-17 14:55 更新

文件上傳表單提交

因為Ajax不支持enctype="multipart/form-data" 所以用隱藏iframe來處理無刷新表單提交. 

<form method="post" action="url" class="pageFormrequired-validate" enctype="multipart/form-data" onsubmit="return iframeCallback(this);">
或
<form method="post" action="url" class="pageFormrequired-validate" enctype="multipart/form-data"onsubmit="return iframeCallback(this, [navTabAjaxDone/dialogAjaxDone]);">

服務(wù)器端響應(yīng)

DWZ-v1.2版本開始服務(wù)器返回和validateCallback格式保持一致:

 {
    "statusCode":"200",
    "message":"操作成功",
    "navTabId":"",
"rel":"",
    "callbackType":"closeCurrent",
    "forwardUrl":""
}

DWZ-v1.2以前版本使用隱藏iframe來處理無刷新表單提交時,服務(wù)器端需要返回以下js代碼:

<script type="text/javascript">
    var statusCode="200";
    var message="操作成功";
    var navTabId="";
    var forwardUrl="";
    var callbackType="closeCurrent"
 
    var response = {statusCode:statusCode,
       message:message,
       navTabId:navTabId,
       forwardUrl:forwardUrl,
       callbackType:callbackType
    };
    if(window.parent.donecallback) window.parent.donecallback(response);
</script>

Java服務(wù)器端表單處理示例

public class NewsAction extends BaseAction {
    private NewsManager manager = bf.getManager(BeanManagerKey.newsManager);
    private News news = manager.newNews();
    private Collection<News> newsList;
 
    public String add() {
       return INPUT;
    }
 
    public String insert() {
       manager.createNews(news);
       return ajaxForwardSuccess(getText("msg.operation.success"));
    }
 
    public String edit() {
       news = manager.getNews(this.getNewsId());
       return INPUT;
    }
 
    public String update() {
       News m = manager.getNews(newsId);
       m.copyProperties(news);
       manager.updateNews(m);
       return ajaxForwardSuccess(getText("msg.operation.success"));
    }
 
    public String publish() {
       manager.publishNews(newsId);
       return ajaxForwardSuccess(getText("msg.operation.success"));
    }
 
    public String disable() {
       manager.disableNews(newsId);
       return ajaxForwardSuccess(getText("msg.operation.success"));
    }
 
    public String delete() {
       manager.removeNews(newsId);
       return ajaxForwardSuccess(getText("msg.operation.success"));
    }
}
 
// BaseAction 代碼片段
public class BaseAction extends ActionSupport {
    private int statusCode = 200;
    private String message = null;
    private String forwardUrl = null;
    private String ajaxForward(int statusCode) {
       this.statusCode = statusCode;
       return OPERATION_DONE;
    }
    protectedString ajaxForwardSuccess(String message) {
       this.message = message;
       return ajaxForward(200);
    }
    protectedString ajaxForwardError(String message) {
       this.message = message;
       return ajaxForward(300);
    }
    public int getStatusCode() {
       return statusCode;
    }
   
    public String getMessage() {
       return message;
    }
 
    public String getForwardUrl() {
       return forwardUrl;
    }
 
    public void setForwardUrl(String forwardUrl) {
       this.forwardUrl = forwardUrl;
    }
}
 
// 工具類判斷是否ajax請求
public class ServerInfo {
    public static boolean isAjax(HttpServletRequest request) {
       if (request != null
              && "XMLHttpRequest".equalsIgnoreCase(request
                     .getHeader("X-Requested-With")))
           return true;
       return false;
}
}

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號