解决struts2和jquery AjaxForm上传图片不能返回Json的问题
情况一:能上传,但是会报如下错误,而且返回不了JSON值:
Js:
$("#filesubmit").click(function () {
if ($("#inputfile").val() == "") {
alert("请选择一个图片文件");
return;
}
alert("ok");
$("#fileUpload").ajaxSubmit({
//url:"fileUpload",
//type:"post",
//enctype:'multipart/form-data',
//iframe: true,
dataType:"json",
success: function (data, status) {
//if()
alert(data);
alert(data.myFilefileName);
//var imgpath="UploadImages/"+data.myFilefileName;
var imgpath="../UploadImages/"+data.myFilefileName;
alert(imgpath);
$(".jcrop-preview").attr('src', imgpath);
//$("#target").removeAttr('src');
$("#target").attr('src', imgpath);
// alert($("#target").attr('src'));
$("#srcimg").val( data.myFilefileName);
$(".jcrop-holder img").attr('src', imgpath);
}
});
});
Action片段:
publicclass ImgUploadAction extends MySuperAction{
privatestaticfinallongserialVersionUID = 572146812454l;
privatestaticfinalintBUFFER_SIZE = 16 * 1024;
public OperateImage imgoper=new OperateImage();
private File myFile;
private String myFilecontentType;
private String myFilefileName;
private String imageFileName;
private String caption;
Struts.xml:
<package name="ajaxDemo" extends="json-default">
<action name="fileUpload" class="action.ImgUploadAction" method="uploadPic">
<interceptor-ref name="fileUploadStack" />
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg
</param>
<param name="maximumSize">4194304</param>
</interceptor-ref>
<result type="json"></result>
</action>
<action name="cutPic" class="action.ImgUploadAction" method="cutPic">
<result type="redirect">/page/altpho.jsp</result>
</action>
<action name="zhuce" class="action.UserAction" method="zhuceCheck">
<result type="json"></result>
</action>
<action name="setRelationship" class="action.RelationAjaxAction">
<result type="json"></result>
</action>
</package>
十二月 05, 2013 10:41:37 下午 org.apache.struts2.dispatcher.Dispatcher warn
WARNING: Could not find action or result
There is no Action mapped for action name undefined. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
十二月 05, 2013 10:41:37 下午 org.apache.struts2.dispatcher.Dispatcher error
SEVERE: Exception occurred during processing request: There is no Action mapped for action name undefined.
There is no Action mapped for action name undefined. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
情况二:注释掉dataType:”json”,后不报异常,但是返回的看似Json,但不可用
还有其他各种状况,多得都忘了,下面是解决方法(花了我好几天的时间,走了不少弯路,最终还是行了啊 >_< )
Struts.xml:
<struts>
<constant name="struts.multipart.saveDir" value="/temp"></constant>
<constant name="struts.multipart.maxSize" value="1024102400"/>
<constant name="struts.multipart.maxSize" value="9000000"/>
<package name="example" namespace="" extends="struts-default">
<action name="fileUpload" class="action.ImgUploadAction" method="uploadPic">
<interceptor-ref name="fileUploadStack" />
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg
</param>
<param name="maximumSize">4194304</param>
</interceptor-ref>
<result name="success">/page/test.jsp </result>
</action>
<action name="cutPic" class="action.ImgUploadAction" method="cutPic">
<result type="redirect">/page/altpho.jsp</result>
</action>
</package>
</struts>
Test.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
//本jsp用于解决struts2和jquery AjaxForm上传图片不能返回Json的问题,
//从altpho.jsp异步提交到ImgUploadAction中,再return success/error到此页面中
//在此页面获取Action中的值,制作成Json,就能在altpho.jsp中获取
//System.out.println("有执行2"+request.getParameter("myFilefileName"));
response.setContentType("text/html;charaset=utf-8");
//System.out.println("有执行3"); response.getWriter().write("{\"myFilefileName\":\""+session.getAttribute("imageFileName")+"\"}");
System.out.println(session.getAttribute("imageFileName"));
//System.out.println("有执行4");
//response.sendRedirect("altpho.jsp");
%>
Js:
Action:
Alert(data);
Alert(data.myFilefileName);
不知你们是怎么解决的,愿意的话贴贴你们解决的方法
相关推荐
Struts2 与Jquery Ajax的json数据交换的典型范例
struts2+jquery+ajax实现了文件的异步上传,的MyEclipse编写的简单项目
一个简单的demo,实现了struts2+jquery执行ajax异步请求并返回json类型数据的实例,代码中附有注释,简单易懂。 基于eclipse开发,导入到eclipse即可运行。
struts2下通过jquery的ajax从后台传json对象并展示在web页面上的一个小例子,所需的jar包请自己下载否则无法运行,所需的包包括struts的必须包,json的支持包和struts对json的支持包
JQuery发送Ajax请求Struts2,并返回JSON的例子。该例子对应 http://blog.csdn.net/littleqiang520中的博文
Struts2 Jquery ajax Json实现的一个完整案例
struts2使用jquery整合ajax、json用户登录实例源码
struts2 json jquery ajax实现用户登陆及业面跳转
MVC Struts2框架搭建,Jquery Ajax异步数据交互,内涵需要的jar包及ppt讲解
Struts2+jQuery ajax的一个商品小系统Struts2+jQuery ajax的一个商品小系统
struts2+json+jquery实现ajax数据的存取
struts2+jquery+ajax实现头像上传切割图片,稍事改动即可用于具体项目
NULL 博文链接:https://huibin.iteye.com/blog/586035
Struts+Jquery+Ajax+Json应用实例,前端引入jquery,后台使用struts框架。前端js调用后台action,并将后台返回的json数据进行解析,设置web页面
1、将struts2的json插件加入web工程的lib,jsonplugin的下载地址:http://code.google.com/p/jsonplugin/downloads/list
json2+jsonplugin struts2整合ajax时,使用json时需要的jar包。。。。。。。。。。。。
介绍struts、ajax如何返回json数据 一首先引入Struts和json所需的jar包。 二编写页面 三编写action类 四Struts配置
这是前台用jsp页面,并应用jquery、easyui、ajax、struts2技术,以json数据格式传输的一个登录例子
此是简单几个技术集成..只完成了简单功能,测试可行.适合刚接触的童鞋,
struts2+ajax+jquery异步批量上传超大文件,单文件最大支持2G,一次文件数量,文件大小都可设置。简单明了。绝对可用,稍微懂点的就可以修改为自己所用。你值得拥有! 我会分享给大家更多更好的东西,希望支持!