加載JSF頁面時出現下面提到的錯誤。 成功加載頁面,並且頁面上的所需操作也完成,但出現此錯誤。javax.faces.FacesException:在加載JSF頁面時解碼資源數據頁面
jsf頁面包含選項卡面板,單擊每個選項卡面板時出現錯誤。 此外,我發現如果我保留頁面的某個部分呈現= false,那麼錯誤不會到來,但該部分不會再被重新渲染。
我正在使用JSF2.0和JSP。和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被綁定到渲染和intially值設置爲false錯誤不來支持豆。 但是,在重新渲染outputPanel時,outputPanel從不出現。
問題基本上出現在包含組件上。 我在頁面中有4個選項卡。在兩個選項卡上,我使用listshuttle(每個選項卡上有兩個組件)。 在這兩個選項卡上,綁定到listshuttle的源和目標的ArrayList都相同。
也正是由於這一點,我綁定同一份名單,無論是在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);
的觀察到這個帖子的可能的答案是,我現在面臨某種瀏覽器的問題..
當同一應用程序從另一臺機器上訪問也絕對不會例外...... 這是奇怪的因爲我使用Firefox 11.0,另一臺機器有Firefox 4.0
這對瀏覽器來說可能是一個問題。
這裏是jboss的相關JIRA問題:https://issues.jboss.org/browse/RF-12062 – 2013-02-04 13:54:26
另外我會建議在過濾器中檢查FF版本(不能將代碼粘貼到一個合理的形式,但與匹配「Firefox /(\\ d +)\\。\\ d +」正則表達式一樣簡單。 – 2013-02-04 13:57:36
問題似乎是像'!'這樣的字符被firefox轉換爲'%21',這個解決方案中提出的過濾器會將%21轉換回'!'所以可以在服務器中找到資源。另外請注意,如果您的基本url包含子路徑,例如 spring/a4j/* url-pattern>,則可能需要更改url-pattern。 –
ollbap
2014-08-06 10:25:08