Ang*_*ons 8 jboss richfaces jsf-2
我在加载JSF页面时遇到了下面提到的错误.页面成功加载,页面上的所需操作也已完成,但是出现此错误.
jsf页面包含选项卡面板,单击每个选项卡面板时出现错误.另外,我发现如果我将页面的某一部分保留为render = false,则错误不会出现,但该部分也不会被重新呈现.
我正在使用JSF2.0和JSP.和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
Run Code Online (Sandbox Code Playgroud)
jsf页面和组件的代码片段,当在bean中呈现= false时,不会引发上述错误.
<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>
Run Code Online (Sandbox Code Playgroud)
如果outputPanel绑定到支持bean以进行呈现,并且最初将值设置为false,则不会出现错误.但是在重新呈现outputPanel时,outputPanel永远不会出现.
问题基本上出现在包括组件上.我在页面中有4个选项卡.在两个选项卡上,我使用listshuttle(每个选项卡上有2个组件).在两个选项卡上,源和目标绑定到listshuttle的arraylist是相同的.
是由于这个原因,我将相同的列表绑定到两个班车.然而,另一个选项卡中的相同代码工作绝对正常....
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>
Run Code Online (Sandbox Code Playgroud)
ArrayList代码: -
ArrayList<String> lstAvailable=new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
里面有些功能
lstAvailable=class.function(Some variable))
this.setLstAvailable(lstAvailable);
Run Code Online (Sandbox Code Playgroud)
观察到这篇文章的可能答案是我遇到了某种浏览器问题.
当从另一台机器访问相同的应用程序时,绝对没有异常......这很奇怪,因为我使用的是Firefox 11.0而另一台机器有Firefox 4.0
这真的是浏览器的问题吗?
Ang*_*ons 14
现在,所有Firefox升级> 10.0的问题都出现了问题.在Firefox浏览器脚本中有一些变化,它不允许正确读取树.
请在项目中添加以下内容以消除所有与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
}
}
Run Code Online (Sandbox Code Playgroud)
请在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>
Run Code Online (Sandbox Code Playgroud)
这肯定会消除与Firefox浏览器和RichFaces组件相关的所有问题.
| 归档时间: |
|
| 查看次数: |
10996 次 |
| 最近记录: |