2013-07-01 32 views
0

扔在Tomcat7.0.40 JSF2.1 OF1.4.1 PF3.5例外FullAjaxExceptionHandler和FacesExceptionFilter重定向错误 我在文档配置FacesExceptionFilter和FullAjaxExceptionHandlerFactory作为 - http://showcase.omnifaces.org/exceptionhandlers/FullAjaxExceptionHandler - http://showcase.omnifaces.org/filters/FacesExceptionFilterOminifaces从ManagedBean

我也有加上在web.xml

<error-page> 
     <exception-type>java.lang.IndexOutOfBoundsException</exception-type> 
     <location>/errors/bug.xhtml</location> 
</error-page> 

登录我去主页通过这个导航规则后

<navigation-rule> 
     <from-view-id>/stdPortal/index.xhtml</from-view-id> 
     <navigation-case> 
      <from-outcome>mainPortal</from-outcome> 
      <to-view-id>/stdPortal/stdPages/mainPortal.xhtml</to-view-id> 
      <redirect/> 
     </navigation-case> 
    </navigation-rule> 

在mainPortal.xhtml我有一个图表

      <p:poll interval="60" update="graficoPresidio03Top" /> 

          <p:barChart id="graficoPresidio03Top" value="#{mainPortalBean.graficoPresidio03Top}" legendPosition="ne" 
             style="width:1050px;height:300px" stacked="true" animate="true" xaxisAngle="45" seriesColors="ADFF2F, FFFF00, FFA500, FF4500"/> 

         </p:panel> 

图表每次

@ManagedBean 
@ViewScoped 
public class MainPortalBean implements Serializable { 
    private static final long serialVersionUID = 5783190881181226264L; 
    @ManagedProperty(value = "#{user}") 
    private UserBean userBean; 


    public void setUserBean(UserBean userBean) { 
     this.userBean = userBean; 
    } 
    .... 

    public CartesianChartModel getGraficoPresidio03Top() { 
     createGraficoPresidio03Top(); 
     return graficoPresidio03Top; 
    } 

我已经改变了用于创建索引超出结合的例外

的更新
private void createGraficoPresidio03() { 
    //here code with for modified 
} 

我得到了Tomcat的LOG

lug 01, 2013 12:35:40 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [] threw exception [An error occurred performing resource injection on managed bean mainPortalBean] with root cause 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
    at java.util.ArrayList.rangeCheck(ArrayList.java:604) 
    at java.util.ArrayList.get(ArrayList.java:382) 
    at com.telenia.tsam.beans.MainPortalBean.createGraficoPresidio03(MainPortalBean.java:815) 
    at com.telenia.tsam.beans.MainPortalBean.init(MainPortalBean.java:152) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:114) 
    at com.sun.faces.vendor.WebContainerInjectionProvider.invokePostConstruct(WebContainerInjectionProvider.java:96) 
    at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223) 
    at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105) 
    at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) 
    at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) 
    at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) 
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) 
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72) 
    at org.apache.el.parser.AstValue.getValue(AstValue.java:161) 
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 
    at javax.faces.component.UIOutput.getValue(UIOutput.java:169) 
    at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:64) 
    at org.primefaces.component.spinner.SpinnerRenderer.encodeInput(SpinnerRenderer.java:122) 
    at org.primefaces.component.spinner.SpinnerRenderer.encodeMarkup(SpinnerRenderer.java:103) 
    at org.primefaces.component.spinner.SpinnerRenderer.encodeEnd(SpinnerRenderer.java:66) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    at org.primefaces.component.tabview.TabViewRenderer.encodeTabContent(TabViewRenderer.java:279) 
    at org.primefaces.component.tabview.TabViewRenderer.encodeContents(TabViewRenderer.java:237) 
    at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(TabViewRenderer.java:127) 
    at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:71) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:63) 
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47) 
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.telenia.tsam.Filters.NoCacheFilter.doFilter(NoCacheFilter.java:47) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

的问题是我不重定向到完整的错误页面,但到部分页错失了很多其内容的电流响应。 在我的应用程序的任何其他异常正确管理

如:

lug 01, 2013 1:28:59 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [] threw exception [/stdPortal/stdPages/config/centrale/List.xhtml @147,51 value="#{MM}": /stdPortal/stdPages/config/centrale/List.xhtml @146,103 value="#{cfgCentraleController.resolveMarca(centrale.idMarca)}": Property 'resolveMarca' not found on type com.telenia.tsam.beans.config.centrali.cfgCentraleController] with root cause 
javax.el.PropertyNotFoundException: /stdPortal/stdPages/config/centrale/List.xhtml @147,51 value="#{MM}": /stdPortal/stdPages/config/centrale/List.xhtml @146,103 value="#{cfgCentraleController.resolveMarca(centrale.idMarca)}": Property 'resolveMarca' not found on type com.telenia.tsam.beans.config.centrali.cfgCentraleController 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) 
    at org.primefaces.component.export.Exporter.exportValue(Exporter.java:131) 
    at org.primefaces.component.export.CSVExporter.addColumnValue(CSVExporter.java:219) 
    at org.primefaces.component.export.CSVExporter.exportCells(CSVExporter.java:180) 
    at org.primefaces.component.export.CSVExporter.exportRow(CSVExporter.java:158) 
    at org.primefaces.component.export.CSVExporter.exportAll(CSVExporter.java:134) 
    at org.primefaces.component.export.CSVExporter.export(CSVExporter.java:50) 
    at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:99) 
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) 
    at javax.faces.component.UICommand.broadcast(UICommand.java:300) 
    at javax.faces.component.UIData.broadcast(UIData.java:1092) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.telenia.tsam.Filters.NoCacheFilter.doFilter(NoCacheFilter.java:47) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

如何在corret方向调查?看完这个FullAjaxExceptionHandler with datatable and lazydatamodel 我没有日志,但页面正确管理。

回答

1

停止在getter方法中执行业务逻辑。 Getter方法在生成HTML输出期间被调用。但是,如果由于响应缓冲区被刷新而导致该输出的一部分已经发送给客户端,那么就意味着没有返回点。您不能将已发送的字节带回并呈现完全不同的页面(在本例中为错误页面)。客户端以半页面结束,因为生成HTML输出已被完全中止。

在生成HTML输出之前,您应该在动作/侦听器方法中执行业务逻辑。

更改滥用的吸气剂的方法

public CartesianChartModel getGraficoPresidio03Top() { 
    createGraficoPresidio03Top(); 
    return graficoPresidio03Top; 
} 

是一个fullworthy getter method

public CartesianChartModel getGraficoPresidio03Top() { 
    return graficoPresidio03Top; 
} 

并调用该操作方法作为投票收听者代替

<p:poll ... listener="#{mainPortalBean.createGraficoPresidio03Top}" /> 

无关到具体的问题,有一个特定RuntimeException一个错误页面是一种气味(这是一个错误!)。 RuntimeException s应该通过改变代码逻辑来修复,使得它从未被抛出。例如。通过预先检查苛刻条件的if块。

+0

感谢,并作为平常很多东西需要学习,这应该成为一个维基。 – user1594895

+0

我收集了精心挑选的答案,如http://jsf.zeef.com。 – BalusC

+0

OMG这就是源码! WOW – user1594895