2018-05-02 08:59
@JFinal 测试了。是ActionReporter.report(ActionReporter.java:103)这个地方导致的,这里并没有其他参数传递过来。只有request.getHeader("xxx");里面有数据,还有的就是用DataInputStream流接收数据。如果这个里使用了request.getParameterNames()。就会报上面那个错误。所以。我暂时修改了ActionReporter的104左右成这个。他就不报错了 HttpServletRequest request = controller.getRequest();
Render render = controller.getRender();
if(render!=null){
Enumeration e = request.getParameterNames();
if (e.hasMoreElements()) {
........}}
2018-04-28 15:36
@lyh061619 项目,页面都是utf-8的。websphere那。不管怎么样设置。还是传递出现中文变成"?"
2018-04-16 16:43
@JFinal 也就是说在controller里面第一行调用了renderNull();其实就相当于纯servlet。输入输出的都是自己定义的是吧?
2018-04-13 17:55
@JFinal 有没有可能。虽然我用renderNull();但是他会重新跳转进入本次请求。然后第二次请求已经是没有流数据的了。所以这个时候就流读取报错。
2018-04-13 17:52
@JFinal 我重新跟踪了代码。结果发现从流里面读取数据。也就是DataInputStream is; 通过另外接收的byte长度,int len =dis.readInt();---int rsLen =is.read(byte[] retDate,0,len);中,读取的rslen==len;也就是说并没有出现数据某次读取不够长的情况。
2018-04-13 10:15
@JFinal 谢谢波总的提示。这个地方原本是用servlet,原本也没有报错。后来我把系统分离了一部分业务量重的出来,用jfinal快速搭建子系统。就有这部分。想用jfinal代替servlet的。然后这部分就报错了。他也没提示是哪一块报的错。跟踪log,却是在完成rendernull()之后报的错。我先看下DataInputStream先。看看是否是这里的问题。
2018-04-13 10:08
@lyh061619 websphere是别人管理的。我本机测试只有tomcat。而且别人的环境我没办法操控。所以我想从代码上去解决。网上也是有提到过版本的问题。打补丁。但是我本身没有环境测试。不过还是很感谢你的建议。