Я получаю указанную ниже ошибку при загрузке страницы JSF. Страница загружается успешно, и желаемая операция на странице также выполняется, но эта ошибка возникает.java.util.zip.DataFormatException: некорректная проверка данных
На странице JSF есть панели вкладок, и если я попытаюсь включить некоторые элементы из доступных элементов в предметы, включенные в комплект, произойдет ошибка. Ниже приведен список XHTML списков.
<a4j:outputPanel id="selectItems">
<div id="div_selectItems" class="scroll_container">
<s:div styleClass="dialogueAttribute">
<rich:listShuttle sourceValue="#{itemReportEditor.itemsList}"
targetValue="#{itemReportEntry.itemReportData}"
var="items"
listsHeight="28em"
sourceListWidth="45em"
targetListWidth="45em"
sourceCaptionLabel="Available Items"
targetCaptionLabel="Included Items"
removeAllControlLabel="Remove all"
removeControlLabel="Remove"
copyControlLabel="Add"
copyAllControlLabel="Add all"
fastOrderControlsVisible="true"
orderControlsVisible="true"
converter="#{itemReportEditor.itemReportDataModelConverter}">
<rich:column>
<f:facet name="header">
<h:outputText title="Performance item name"
value="Name"/>
</f:facet>
<h:outputText value="#{items['itemName']}"></h:outputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText title="Performance Item Protocol"
value="Protocol"/>
</f:facet>
<h:outputText value="#{items['protocol']}"></h:outputText>
</rich:column>
<a4j:support event="onlistchanged"
action="#{itemReportEntry.updateItemsList()}"
reRender="la"
oncomplete="resizeScrollBox2();"
status="workingStatus"
eventsQueue="ajaxQueue"/>
</rich:listShuttle>
</s:div>
</div>
</a4j:outputPanel>
Я пытаюсь добавить некоторые элементы, используя шаттл списка из левой стороны к правой стороне, и я получаю следующее исключение (только в FireFox браузере, не заметил эту проблему в Google Chrome) в журналах (в состоянии применить все изменения правильно, просто получив следующее исключение). Моя FireFox версия 35.0.1
2015-04-06 15:42:34,272 ERROR [http-0.0.0.0-8080-8] org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/client].[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:369)
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:488)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
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:598)
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)
... 30 more
погуглить я нашел «Проблема, кажется, что символы, такие как„!“ преобразуются FireFox в «% 21». Следующий фильтр преобразует% 21 обратно в '!' поэтому ресурс может быть найден на сервере»
В моем случае, я просто получаю исключение в журналах, но все источники успешно загружены
Для того, чтобы устранить исключение, я добавил фильтр
package juno.sa.server;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class RichFacesFirefox11Filter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
@Override
public String getRequestURI() {
try {
return URLDecoder.decode(super.getRequestURI(), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("Cannot decode request URI.", e);
}
}
}, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// do nothing
}
@Override
public void destroy() {
// do nothing
}
}
<filter>
<filter-name>RichFacesFirefox11Filter</filter-name>
<filter-class>juno.sa.server.RichFacesFirefox11Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>RichFacesFirefox11Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>
Итак, если ваши ресурсы загружаются и фильтр предотвращает исключение, в чем проблема? – Makhiel
Ресурс загружен, но я получаю исключение в журналах, я не хочу, чтобы это исключение – priti