在Controller中以一個類做爲返回結果,而後解析成JSON傳輸給JSP頁面。

在Controller中以一個類做爲返回結果,而後解析成JSON傳輸給JSP頁面。app

@RequestMapping(value = "/upload", method = RequestMethod.POST)jsp

@ResponseBodythis

public AjaxResult upload(HttpServletRequest request, HttpServletResponse response) {spa

AjaxResult result = new AjaxResult();debug

String refSys = request.getParameter("refSys");code

String foreignId = request.getParameter("foreignId");orm

String version = request.getParameter("version");對象

String remark = request.getParameter("remark");ip

String keyword = request.getParameter("keywords");rem

String callback = request.getParameter("callback");

String type = request.getParameter("type");

LogUtils.debug("文件上傳", refSys, foreignId, version, keyword);

try {

Map<String, Object> map = new HashMap<String, Object>();

if (!StringUtils.isEmpty(refSys)) {

refSys = URLDecoder.decode(refSys, "UTF-8").toUpperCase();

}

if (!StringUtils.isEmpty(foreignId)) {

foreignId = URLDecoder.decode(foreignId, "UTF-8").toUpperCase();

}

if (!StringUtils.isEmpty(version)) {

version = URLDecoder.decode(version, "UTF-8").toUpperCase();

}

if (!StringUtils.isEmpty(remark)) {

remark = URLDecoder.decode(remark, "UTF-8");

}

String[] keywords = null;

if (!StringUtils.isEmpty(keyword)) {

keyword = URLDecoder.decode(keyword, "UTF-8").toUpperCase();

keywords = keyword.split("[,;\\s\\t\\n]+");

}

Collection<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("files");

if (files == null || files.isEmpty()) {

files = new ArrayList<MultipartFile>();

MultiValueMap<String, MultipartFile> mfiles= ((MultipartHttpServletRequest)request).getMultiFileMap();

Map<String, MultipartFile> singleFileMap = mfiles.toSingleValueMap();

Set<Map.Entry<String, MultipartFile>> fileSet = singleFileMap.entrySet();

for(Map.Entry<String, MultipartFile> file : fileSet) {

MultipartFile myFile = file.getValue();

files.add(myFile);

}

/* Map<String, MultipartFile> mfiles = ((MultipartHttpServletRequest) request).getFileMap();

for (Entry<String, MultipartFile> file : mfiles.entrySet()) {

MultipartFile myfile = file.getValue();// 獲取上傳文件對象

files.add(myfile);

}*/

}

if (files != null && !files.isEmpty()) {

BaseFile file = null;

if ("mongo".equals(filePersistType)) {

file = new MongoDbFilePo();

} else {

file = new FileInfoPo();

}

file.setRefSys(refSys);

file.setForeignId(foreignId);

// 存儲文件

file = (BaseFile) getFileService().uploadFile(files, file, version, remark, keywords);

map.put("id", file.getId());

map.put("foreignId", file.getForeignId());

map.put("version", file.getVersion());

if (!StringUtils.isEmpty(file.getPassword())) {

map.put("pwd", file.getPassword());

}

result.setData(map);

result.setMessage("文件上傳成功!");

} else {

result.setSuccess(false);

LogUtils.debug("文件上傳-未選擇文件", refSys, foreignId, version, keyword);

result.setMessage("未選擇上傳的文件!");

}

} catch (Exception e) {

LogUtils.debug("文件上傳-失敗");

result.setSuccess(false);

result.setMessage("文件上傳失敗,請聯繫管理員!");

LogUtils.error("文件保存失敗", e, refSys, foreignId, version, keyword);

}

if ("form".equalsIgnoreCase(type)) {

request.setAttribute("result", JSONObject.fromObject(result).toString());

request.setAttribute("callback", callback);

try {

request.getRequestDispatcher("/WEB-INF/jsp/file/form_result.jsp").forward(request, response);

return null;

} catch (ServletException e) {

LogUtils.error("", e);

} catch (IOException e) {

LogUtils.error("", e);

}

}

return result;

}

AjaxResult爲返回結果類:

public class AjaxResult {

private boolean success = true;

private String message ;

Map<String, Object> data;

public AjaxResult(boolean success){

this.success = success;

}

public AjaxResult(boolean success,String message){

this.success = success;

this.message = message;

}

public AjaxResult(){

}

public boolean isSuccess() {

return success;

}


public void setSuccess(boolean success) {

this.success = success;

}


public String getMessage() {

return message;

}


public void setMessage(String message) {

this.message = message;

}


public Map<String, Object> getData() {

return data;

}


public void setData(Map<String, Object> data) {

this.data = data;

}

}

所解析成的JSON語句爲:"{"success":true,"message":"文件上傳成功!","data":{"foreignId":"12345678","id":"8a8c8cb85184b866015185576ca60000","version":null}}"

外層,success,message,data爲AjaxResult類中的屬性,(若是這些類屬性的set/get方法不是按照默認規則寫的,實際結成JSON語句時,外層顯示的名稱爲實際使用的set/get方法去掉"set","get"字符前綴後的名稱。)

相關文章
相關標籤/搜索