2012-04-16 22 views
8

Recibo el error mencionado más abajo al cargar la página JSF. La página se carga correctamente y también se realiza la operación deseada en la página, pero aparece este error.javax.faces.FacesException: Error al descodificar los datos de recursos durante la carga de la página JSF

La página jsf contiene paneles de pestañas y al hacer clic en cada panel de pestañas aparece el error. También encontré que si mantengo cierta parte de mi página como prestada = falsa, entonces el error no aparece pero la porción no se vuelve a entregar nuevamente.

Estoy usando JSF2.0 con JSP. y RF3.3

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 

Fragmento de código de la página JSF y componente que cuando se representa = false en el bean no lanza el error mencionado anteriormente.

<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> 

Si outputPanel se unen a realizar copias de frijol para la representación y inicialmente el valor se establece a falso el error no viene. Sin embargo, al volver a distribuir outputPanel, el panel de salida nunca aparece.

El problema básicamente está apareciendo en el componente incluido. Tengo 4 pestañas en la página. En dos pestañas estoy usando el listshuttle (2 componentes en cada pestaña). En ambas pestañas, la lista de arrays de origen y destino atadas a listas es la misma.

¿Es debido a esto que estoy vinculante la misma lista a las shuttles.However el mismo código en otra pestaña funciona absolutamente bien .... código

ListShuttle: -

<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> 

código ArrayList: -

ArrayList<String> lstAvailable=new ArrayList<String>(); 

Dentro alguna función

lstAvailable=class.function(Some variable)) 
this.setLstAvailable(lstAvailable); 

La posible respuesta para este post como se observa es que estoy frente a algún tipo de problemas con el navegador ..

Cuando se accede misma aplicación desde otra máquina no hay absolutamente ninguna excepción ... Esto es extraño como estoy usando Firefox 11.0 y otra máquina tiene Firefox 4.0

¿Esto realmente puede ser un problema con el navegador?

Respuesta

13

El problema ahora está ocurriendo muy prominentemente en todas las actualizaciones de Firefox> 10.0 .. Hay algún cambio en la secuencia de comandos del navegador Firefox que no permite que el árbol se lea correctamente.

Por favor, añada lo siguiente en su proyecto para eliminar todos los problemas relacionados con el navegador Firefox: -

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 
    } 

} 

Y por favor, introduzca el carácter de este filtro en el archivo web.xml también.

<filter> 
    <filter-name>RichFacesFirefox11Filter</filter-name> 
    <filter-class>Packagename.RichFacesFirefox11Filter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>RichFacesFirefox11Filter</filter-name> 
    <url-pattern>/a4j/*</url-pattern> 
    </filter-mapping> 

Esto seguramente eliminará todos sus problemas relacionados con los navegadores Firefox y los componentes de RichFaces.

+1

Aquí está el problema JIRA relevante de jboss: https://issues.jboss.org/browse/RF-12062 –

+1

También sugeriría hacer una comprobación de la versión FF en el filtro (no se puede pegar el código de una manera sensible) forma en el comentario, pero es tan simple como coincidir con una "expresión regular de Firefox/(\\ d +) \\. \\ d +"). –

+0

¡El problema parece ser que personajes como '!' se convierten por Firefox a '% 21', el filtro propuesto en esta solución convertirá el% 21 a '!' así que el recurso se puede encontrar en el servidor. También tenga en cuenta que url-pattern podría necesitar ser cambiado si su url base contiene sub-rutas como spring/a4j/* por ejemplo. – ollbap

0

primer lugar, el <rich:tabPanel> que envuelve cada <rich:tab> debe estar dentro de un form (consultar la nota en la documentación), por lo que la forma interior de la ficha no es NECESARIO. Además, si desea llamar a una acción del servidor cuando hace clic en alguna pestaña, debe verificar switchType con el valor server.

Una cosa más, tal vez su código XHTML dentro del <a4j:outputPanel> contiene errores, sería mejor si actualiza su publicación con el código completo o más de ese código.

+1

Necesito incluir desde el interior de la pestaña. No creo que la forma esté causando tipo de problema Para , incluso al eliminar esto, el error sigue apareciendo. Por favor, lea mi edición ya que creo que el problema está en el listshuttle. Si el listshuttle se vuelve falso en la carga de la página, la excepción no aparece. Tan pronto como se muestra la lanzadera de la lista, aparece la excepción. – AngelsandDemons

1

No tengo dudas que la respuesta de AnglesAndDemons es correcta aquí, pero por alguna razón no pude hacerlo funcionar. Estoy usando Richfaces 3.3.3 Final, y lo que funcionó, fue la descarga de los parches richfaces-impl.jar de la edición JIRA https://issues.jboss.org/browse/RF-12062

Cuestiones relacionadas