在Struts2+Ajax实现文件上传时遇到了报错:No result defined for action com.excel.ReadExcel and result input。
出现问题原因:前端使用Ajax传值时使用的是form表单的submit,而后台返回时直接返回了字符串,错误代码如下:
1.Ajax 提交表单。
// An highlighted block
$('#form_s').form('submit',{
url : "test_excel.action",
onSubmit:function(){
},
success:function(data){
alert(data);
}
});
2.test_excel.action对应的类
// An highlighted block
public void write() throws IOException {
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse resp = ServletActionContext.getResponse();
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
System.out.println("excel1:"+excel);
out.write("0");//错误之处
out.flush();
out.close();
}
解决方法:将返回给前端Ajax的值复制给字符串变量,然后返回此字符串变量。修改后代码如下。
1.Ajax 提交表单。
// An highlighted block
$('#form_s').form('submit',{
url : "test_excel.action",
onSubmit:function(){
},
success:function(data){
alert(data);
}
});
2.test_excel.action对应的类。
// An highlighted block
public void write() throws IOException {
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse resp = ServletActionContext.getResponse();
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
System.out.println("excel1:"+excel);
String str="0";//修改之处
out.write(str);
out.flush();
out.close();
}