JFinal ajax 只能返回json的bug? 400 报错
@JFinal 你好,
最近使用JFinal1.9发现一个bug,只要是ajax 的请求,jFinal都会返回json,不能返回html这些。
我测试过,FreeMaker,Beetl,都有这样的问题。
说明下:项目是从其他框架转到JFinal上,UI没有任何变化,在其他框架上,没有出现这个问题。
ajax请求指定返回的datatype, controller中使用对应的render返回对应类型的数据,如string,json等……######那就奇怪了,我都用得好好的(之前用ajax请求却获取html,之定render后获得json,反之也一样吧)######回复 @车开源 : 无论指定RenderHtml,RenderText,JFinal都会返回Json,JFianl Controller中,做了判断,从新建了一个Render,我Debug过这块代码的。######要指定对应的render######对了你所谓的html可以按照string 理解。 不知道我的回答对不对你的问题…… 或者你的表述和我的理解有偏差######换浏览器试了吗?######肯定的,safair,chrome######
jfinal 的 render 方法返回什么类型的数据与请求无关,只与 render 实现类有关,例如,你前端请求是 ajax,而后端用的 renderHtml(String),那返回的 content type 就是 text/html。再例如,你前端请求是普通的http get,后端是 renderJson(...),那返回的 content type 就是 application/json。
楼主出现的情况很可能是被拦截器干预过了,使用了别的 render 方法,跟踪一下 com.jfinal.core.ActionHandler.java 这个类,看一下最终到底用的是哪个 render,中途使用的 render 都不一定是最终的,例如拦截器在 ai.invoke() 以后可以再次 render,对于多次 render 调用,只有最后一次才有效
######对,我跟了代码,拦截器在 ai.invoke() 中,从新创建了一个Render,这个Render默认返回Json######关于这个问题,我也遇到了。我用的是jfinal集成beetl,渲染的时候,render其实是有beetl提供 ,我想是beetl的问题,但其作者并不打算回答这个问题。
顺便问一下,这个问题你找到解决办法了吗》?
######我没有解决,还是用之前的Nutz,我跟了代码,发现JFinal 从新创建了一个Render,######您好,问题找到了。你在继承controller的时候选择import com.jfinal.core.Controller;然后再试试。
######表示对beetl误会表示歉意!版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。