【问题标题】:<a4j:mediaOutput/> Not working in Tomcat 7 for image rendering<a4j:mediaOutput/> 在 Tomcat 7 中无法进行图像渲染
【发布时间】:2025-12-12 07:35:01
【问题描述】:

我正在尝试使用 .用户上传图片后,我将尝试使用以下代码显示图片。
<a4j:mediaOutput element="img" createContent="#{bean.paint}" value="1" style="width:275px; height:75px;" mimeType="image/jpg" id="media" cacheable="false"> <f:param value="#{bean.timeStamp}" name="time" /> </a4j:mediaOutput>
我的 Java 代码是
public Part part; //getters & Setters public void paint(OutputStream stream, Object data) throws IOException{ InputStream inputStream = null; try { inputStream = part.getInputStream(); stream.write(IOUtils.toByteArray(inputStream)); stream.close(); } catch (Exception e){
} }


我的部分是包含文件。但我遇到了以下异常。

严重:反序列化数据的输入错误 java.io.InvalidClassException:未经授权的反序列化尝试; org.apache.el.lang.VariableMapperImpl 在 org.richfaces.util.LookAheadObjectInputStream.resolveClass(LookAheadObjectInputStream.java:97) 在 java.io.ObjectInputStream.readNonProxyDesc(未知来源) 在 java.io.ObjectInputStream.readClassDesc(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readObject(未知来源) 在 org.apache.el.MethodExpressionImpl.readExternal(MethodExpressionImpl.java:297) 在 java.io.ObjectInputStream.readExternalData(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.defaultReadFields(未知来源) 在 java.io.ObjectInputStream.readSerialData(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readObject(未知来源) 在 com.sun.faces.facelets.el.TagMethodExpression.readExternal(TagMethodExpression.java:158) 在 java.io.ObjectInputStream.readExternalData(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.defaultReadFields(未知来源) 在 java.io.ObjectInputStream.readSerialData(未知来源) 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readArray(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readObject(未知来源) 在 org.richfaces.util.Util.decodeObjectData(Util.java:237) 在 org.richfaces.resource.DefaultCodecResourceRequestData.getData(DefaultCodecResourceRequestData.java:97) 在 org.richfaces.resource.ResourceFactoryImpl.createResource(ResourceFactoryImpl.java:337) 在 org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:156) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:643) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.wellsfargo.ecar.common.util.ServerFilter.doFilter(ServerFilter.java:46) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(未知来源) 2015 年 4 月 6 日下午 4:06:13 org.apache.catalina.core.StandardWrapperValve 调用 严重:servlet [Faces Servlet] 的 Servlet.service() 在带有路径的上下文中

有什么我想念的吗。请帮帮我。

【问题讨论】:

    标签: java spring tomcat richfaces ajax4jsf


    【解决方案1】:

    您可以升级到已修复此问题的最新版本。或者打开您的 RichFaces jar/zip 并找到 resource-serialization.properties,然后将“org.apache.el.lang.VariableMapperImpl”添加到白名单。

    【讨论】:

    • 感谢您的回答 Makhiel。我们的项目中有以下 jar 文件 richfaces-components-api-4.3.4richfaces-components-ui-4.3.4richfaces-core-api-4.3.4richfaces-core-impl-4.3.4。我不确定resource-serialization.properties 文件在哪里。我检查了所有文件夹。如果我应该将 jar 文件更新到我应该更新的版本。
    • 在META-INF/richfaces里面的core-impl里面,RichFaces的最新版本是4.5.4
    最近更新 更多