2012-04-16 10 views
8

मुझे जेएसएफ पृष्ठ लोड करते समय नीचे उल्लिखित त्रुटि मिल रही है। पृष्ठ सफलतापूर्वक लोड हो जाता है और पृष्ठ पर वांछित ऑपरेशन भी किया जाता है लेकिन यह त्रुटि आती है।javax.faces.FacesException: JSF पृष्ठ लोड करते समय संसाधन डेटा को डीकोड करने में त्रुटि

जेएसएफ पृष्ठ में टैब पैनल हैं और प्रत्येक टैब पैनल के क्लिक पर त्रुटि आती है। यह भी पाया गया कि अगर मैं अपने पृष्ठ का एक निश्चित भाग रेंडर = झूठा रखता हूं तो त्रुटि नहीं आती है लेकिन भाग फिर से प्रस्तुत नहीं किया जाता है।

मैं जेएसपी के साथ जेएसएफ 2.0 का उपयोग कर रहा हूं। और JSF पेज और घटक है जो जब = सेम में झूठी गाया की 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 

कोड स्निपेट ऊपर उल्लेख किया त्रुटि फेंकता नहीं है।

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

outputPanel प्रतिपादन और शुरू में मूल्य झूठी त्रुटि के लिए सेट है नहीं आती है के लिए सेम का समर्थन करने के लिए बाध्य किया जाता है। हालांकि outputPanel को पुन: प्रस्तुत करने पर, आउटपुट पैनल कभी प्रकट नहीं होता है।

समस्या मूल रूप से घटक सहित दिखाई दे रही है। मेरे पास पृष्ठ में 4 टैब हैं। दो टैब पर मैं सूचियों का उपयोग कर रहा हूं (प्रत्येक टैब पर 2 घटक)। दोनों टैबों पर स्रोत और लक्ष्य की सरणीसूची सूचियों के लिए बाध्य होती है।

यह इस है कि मैं दोनों shuttles.However के लिए एक ही सूची बाध्यकारी हूँ की वजह से है किसी अन्य टैब में एक ही कोड बिलकुल ठीक ....

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> 

ArrayList कोड: -

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

कुछ समारोह के अंदर

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

इस पोस्ट के रूप में मनाया के लिए संभव जवाब है कि मैं ब्राउज़र मुद्दों में से किसी तरह का सामना करना पड़ रहा हूँ यह अजीब है ..

जब एक ही आवेदन दूसरी मशीन से पहुँचा जा सकता है वहाँ बिल्कुल कोई अपवाद नहीं है ... क्योंकि मैं फ़ायरफ़ॉक्स 11.0 का उपयोग कर रहा हूं और दूसरी मशीन में फ़ायरफ़ॉक्स 4.0

क्या यह वास्तव में ब्राउज़र के साथ एक समस्या हो सकती है .??

उत्तर

13

समस्या अब सभी फ़ायरफ़ॉक्स अपग्रेड पर बहुत प्रमुख रूप से हो रही है> 10.0 .. फ़ायरफ़ॉक्स ब्राउज़र स्क्रिप्ट में कुछ बदलाव है जो पेड़ को ठीक से पढ़ने की अनुमति नहीं देता है।

कृपया अपने प्रोजेक्ट सब 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 
    } 

} 

और अपने web.xml भी फाइल में इस फिल्टर के प्रवेश सुनिश्चित करें।

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

यह निश्चित रूप से फ़ायरफ़ॉक्स ब्राउज़र और रिचफ़ेस घटकों से संबंधित आपकी सभी समस्याओं को समाप्त कर देगा।

+1

यहां जेबॉस से संबंधित जेआईआरए मुद्दा है: https://issues.jboss.org/browse/RF-12062 –

+1

इसके अलावा मैं फिल्टर में एफएफ संस्करण के लिए एक चेक करने का सुझाव देना चाहता हूं (कोड को समझदार में पेस्ट नहीं कर सकता टिप्पणी में फॉर्म, लेकिन यह "फ़ायरफ़ॉक्स/(\\ डी +) \\। \\ d +" regex) से मेल खाने जैसा आसान है। –

+0

समस्या यह प्रतीत होती है कि '!' जैसे वर्ण फ़ायरफ़ॉक्स द्वारा '% 21' में परिवर्तित किया जाता है, इस समाधान में प्रस्तावित फ़िल्टर% 21 को वापस '!' में परिवर्तित कर देगा इसलिए सर्वर में संसाधन पाया जा सकता है। यह भी ध्यान रखें कि उदाहरण के लिए आपके बेस यूआरएल में वसंत/ए 4 जे/* जैसे उप-पथ शामिल हैं, तो url-pattern को बदलने की आवश्यकता हो सकती है। – ollbap

0

सबसे पहले, <rich:tabPanel> जो हर <rich:tab> को लपेटता है form (दस्तावेज़ में नोट की जांच करें) के अंदर होना चाहिए, इसलिए टैब के अंदर का फॉर्म निष्पक्ष नहीं है। साथ ही, यदि आप कुछ टैब में क्लिक करते समय सर्वर कार्रवाई को कॉल करना चाहते हैं, तो आपको मान के साथ switchType जांचना चाहिए।

एक और बात, शायद <a4j:outputPanel> के अंदर आपका एक्सएचटीएमएल कोड त्रुटियों में है, तो बेहतर होगा यदि आप अपनी पोस्ट को पूर्ण या अधिक कोड के साथ अपडेट करते हैं।

+1

से मुझे पैच के अंदर से शामिल करने की आवश्यकता है। मुझे नहीं लगता कि फ़ॉर्म किसी भी कारण का कारण बन रहा है समस्या की तरह के लिए, इसे हटाने पर भी, त्रुटि अभी भी आती है। कृपया मेरा संपादन पढ़ें क्योंकि मुझे लगता है कि समस्या सूचियों के साथ है। यदि सूची लोड पर सूचियों को झूठा प्रस्तुत किया जाता है, तो अपवाद नहीं आता है। जैसे ही सूची शटल प्रदान की जाती है अपवाद आता है। – AngelsandDemons

1

मुझे कोई संदेह नहीं है कि AnglesAndDemons का जवाब यहां सही है, लेकिन किसी कारण से मैं इसे काम नहीं कर सका। मैं Richfaces 3.3.3 फ़ाइनल का उपयोग कर रहा हूं, और काम क्या किया, जेआईआरए अंक https://issues.jboss.org/browse/RF-12062