关于SpringMvc的responsebody正确返回的问题

JevonsNotes 2017-03-06 01:10:59
最近碰到一个问题,就是返回体中,一定要加个双引号才能成功返回,不加就直接执行了ajax的error函数。例如:
return "\"" + result + "\"";
注意这里的result是已经声明为String类型的,下面贴出源码。

@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String fileUpload(HttpServletRequest request) {
String result = "";
/*
* response.setCharacterEncoding("UTF-8");
* response.setContentType("application/json;charset=utf-8");
*/
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String path = request.getSession().getServletContext().getRealPath("");
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (item.isFormField()) {
System.out.println("表单的参数名称:" + item.getFieldName()
+ ",对应的参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName());

File tempFile = new File(item.getName());
String savePath = path
+ File.separator
+ "backend"
+ File.separator
+ "doc"
+ File.separator
+ new SimpleDateFormat("yyyyMMdd-HHmmss")
.format(new Date())
+ tempFile.getName();

item.write(new File(savePath));
// 获取表数据
List<Map<String, String>> list = ExcelUtil
.readExcelOfTeachers(savePath);
// 对表数据进行迭代筛查
Iterator<Map<String, String>> iterator = list
.iterator();
// 备份遍历的前一个数据元
Map<String, String> oldObj = null;
// 利用HashSet过滤表数据,查重。
HashSet<String> checkRepeat = new HashSet<>();
while (iterator.hasNext()) {
Map<String, String> next = iterator.next();
// 教师名称、工号、手机号码、账号和密码为空则导入失败
if (next.get(ExcelUtil.TCODE).equals("")
|| next.get(ExcelUtil.TNAME).equals("")
|| next.get(ExcelUtil.TMOBILE).equals("")
|| next.get(ExcelUtil.TACCOUNT).equals("")) {
if (next.get(ExcelUtil.TPASSWORD).equals("")) {
iterator.remove();
} else if (oldObj != null) {
return "\"" + "导入失败,工号为:"
+ oldObj.get(ExcelUtil.TCODE)
+ " 的教师之后存在空数据,请修改后重新提交。" + "\"";
} else {
return "\"" + "导入失败,表中第二行存在空数据,请修改后重新提交。"
+ "\"";
}
} else if (next.get(ExcelUtil.TPASSWORD).equals("")) {
// 若密码为空,则默认将教师工号设置成密码
next.put(ExcelUtil.TPASSWORD,
next.get(ExcelUtil.TCODE));
} else {
// 表中存在重复账号则导入失败
if (checkRepeat.contains(next
.get(ExcelUtil.TACCOUNT))) {
return "\"" + "导入失败,账号 : "
+ next.get(ExcelUtil.TACCOUNT)
+ " 在表中已重复,请修改后重新提交。" + "\"";
}
// 记录非重复账号信息
checkRepeat.add(next.get(ExcelUtil.TACCOUNT));
}
// 备份本次迭代数据
oldObj = next;

}
result = tTeacherService.addTeacherList(list);
} else {
result = "没有选择上传文件!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
result = "上传文件不成功!";
}
System.out.println(result);
return "\"" + result + "\"";
}


上面这点代码是能正常弹出结果的,假如把return的信息中双引号去掉就不能弹出了。


下面的结果是不管加不加双引号都有返回的,但是不加双引号则弹出来的却不是respond的信息,而是ajax的返回的错误函数

...全文
277 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JevonsNotes 2017-03-06
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
在spring的xml文件加上这个试试

<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes" value="text/html;charset=UTF-8"></property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
回复神速啊,刚找到答案,没想到有人答了,正解!
李德胜1995 2017-03-06
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
在spring的xml文件加上这个试试

<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes" value="text/html;charset=UTF-8"></property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
springmvc的xml文件
李德胜1995 2017-03-06
  • 打赏
  • 举报
回复
在spring的xml文件加上这个试试

<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes" value="text/html;charset=UTF-8"></property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧