javax.faces.FacesException: Ошибка декодирования данных ресурса при загрузке страницы JSF.
При загрузке страницы JSF я получаю указанную ниже ошибку. Страница загружается успешно, и желаемая операция на странице также выполняется, но появляется эта ошибка.
Страница jsf содержит панели вкладок, и при нажатии на каждую панель вкладок появляется ошибка. Также я обнаружил, что если я сохраню определенную часть моей страницы как визуализированную = false, то ошибка не наступит, но эта часть снова не будет перерисована.
Я использую JSF2.0 с JSP. и RF3.3
<code>ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception javax.faces.FacesException: Error decode resource data at org.ajax4jsf.resource.ResourceBuilderImpl.decrypt(ResourceBuilderImpl.java:627) at org.ajax4jsf.resource.ResourceBuilderImpl.getResourceDataForKey(ResourceBuilderImpl.java:371) at org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:156) at org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:508) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 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:235) at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:662) Caused by: java.util.zip.DataFormatException: incorrect data check at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Inflater.java:238) at java.util.zip.Inflater.inflate(Inflater.java:256) at org.ajax4jsf.resource.ResourceBuilderImpl.decrypt(ResourceBuilderImpl.java:621) ... 25 more </code>
Фрагмент кода страницы и компонента jsf, который при рендеринге = false в bean-компоненте не выдает вышеупомянутую ошибку.
<code><rich:tab ignoreDupResponses="true" id="tabModify" style="overflow:auto" styleClass="richTab" label="#{}" eventsQueue="queueForTab" actionListener="#{}"> <rich:layout> <rich:layoutPanel position="right" id="pnlmodfy"> <h:form id="frmModify"> <h:panelGrid> <h:outputLabel value="#{} * :" escape="false" styleClass="intro" /> <h:outputText value=" : " styleClass="intro" /> <rich:comboBox id="Mdfy" value="#{Bean.str}" suggestionValues="#{Bean.arraylist}"> <a4j:support id="id" actionListener="#{Bean.actionListener}" ajaxSingle="true" event="onchange" reRender="modify"> </a4j:support> </rich:comboBox> </h:panelGrid> <a4j:outputPanel id="modify" ajaxRendered="true"> <h:panelGrid columns="3" id="modify"> <h:outputText value="Description *" styleClass="intro"/> <h:outputText value=" : " styleClass="intro" /> <h:inputTextarea id="Desc" required="true" styleClass="textBox" label="Description" value="#{Bean.strDesc}"> </h:inputTextarea> </code>
Если outputPanel привязан к базовому компоненту для рендеринга и изначально установлено значение false, ошибка не приходит. Однако при повторной визуализации outputPanel outputPanel никогда не появляется.
Проблема в основном возникает при включении компонента. У меня есть 4 вкладки на странице. На двух вкладках я использую списки (2 компонента на каждой вкладке). На обеих вкладках массив источника и цели, привязанный к списку, одинаков.
Это из-за этого я привязываю один и тот же список к обоим шаттлам. Однако один и тот же код в другой вкладке работает абсолютно нормально ....
ListShuttle код: -
<code><h:outputText value="Select" styleClass="intro" rendered="#{!empty Bean.lstAvailable}"/> <h:outputText value=" : " styleClass="intro" /> <rich:listShuttle id="listShuttleN" sourceValue="#{Bean.lstAvailable}" targetValue="#{KPIManagement.lstSelected}" var="items" listsHeight="100" sourceListWidth="100" targetListWidth="100" sourceCaptionLabel="Available" targetCaptionLabel="Selected" rendered="#{!empty Bean.lstAvailable}"> <rich:column> <h:outputLabel value="#{items}"></h:outputLabel> </rich:column> </rich:listShuttle> </code>
Код ArrayList: -
<code>ArrayList<String> lstAvailable=new ArrayList<String>(); </code>
Внутри какой-то функции
<code>lstAvailable=class.function(Some variable)) this.setLstAvailable(lstAvailable); </code>
Возможный ответ на этот пост, как я заметил, заключается в том, что я столкнулся с какими-то проблемами с браузером.
Когда к тому же приложению обращаются с другого компьютера, нет абсолютно никаких исключений ... Это странно, так как я использую Firefox 11.0, а на другой машине установлен Firefox 4.0
Может ли это быть проблемой с браузером?