renderFile 时文件名出错逗号出错!

如题:

image.png

上面文件名时,报错:

com.jfinal.render.RenderException: org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
        at com.jfinal.render.FileRender.normalRender(FileRender.java:99)
        at com.jfinal.render.FileRender.render(FileRender.java:72)
        at com.jfinal.core.ActionHandler.handle(ActionHandler.java:93)
        at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:432)
        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:420)
        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
        at com.jfinal.render.FileRender.normalRender(FileRender.java:94)
        ... 20 more
Caused by: java.net.SocketException: Software caused connection abort: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
        at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
        at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240)
        at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84)
        at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
        at org.apache.coyote.Response.doWrite(Response.java:499)
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:402)
        ... 26 more

image.png

去掉中文,没带逗号时,正常!

评论区

JFinal

2018-06-15 11:45

试试只去掉逗号,保留中文,看是不是正常的

还要注意是不是高版本 jfinal , 高版本对此进行过改进,更好支持中文

亚枫

2018-06-15 16:22

@JFinal 去掉逗号保留中文就可以正常。

亚枫

2018-08-16 11:48

@JFinal 我当前使用的是2.0版本,整个项目功能非常多。如果升级到最新版本,会有哪些影响?

JFinal

2018-08-16 11:57

@亚枫 如果你没有针对 jfinal 做过多少扩展,影响很小,有人跨 9 个版本升级 jfinal 到最新版本,升起来也很方便

如果不想升级,还有一个很省事的办法,就是拿到 jfinal 3.4 的 FileRender.java ,然后在以前的 renderFile(...) 处,改成 render(new FileRender(...)); 注意这里用的是新版本的 FileRender,便于与老版本区分,建议改个名字

如果你引入了 BaseController,还可以在其中覆盖掉父类 Controller 中的 renderFile(String) 方法:
public void renderFile(String file) {
render(new FileRender(file));
}
注意上面的 FileRender 同样也要是 jfinal 3.4 中的实现类

亚枫

2018-08-21 17:25

热门反馈

扫码入社