Nachdem die Benutzer-get aus einem Session-Bean umgeleitet, wird die folgende Ausnahme ausgelöst:Einreichen Form in iframe in IE11 wirft java.lang.StringIndexOutOfBoundsException während der Wiederherstellung JSF Zustandes
StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1911
at com.sun.faces.renderkit.ServerSideStateHelper.getState(ServerSideStateHelper.java:266
at com.sun.faces.renderkit.ResponseStateManagerImpl.getState(ResponseStateManagerImpl.java:100
at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:227
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:453
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303
at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59
at com.sun.grizzly.ContextTask.run(ContextTask.java:71
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513
at java.lang.Thread.run(Thread.java:745)
Die Schaltfläche Code verwendet das actionListener
Attribut:
actionListener="#{aController.aMethod}"
die Steuerung führt die Umleitung wie folgt aus:
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
String encodedURL = response.encodeURL(context.getRequestContextPath() + "/page.xhtml?faces-redirect=true");
context.redirect(encodedURL);
Meine Sitzung config:
<session-config>
<session-timeout>60</session-timeout>
<tracking-mode>URL</tracking-mode>
</session-config>
Die Seite nur eine einzige Form enthält (wie auch die HTML-Ausgabe generiert), definiert:
<form id="wrapper" name="wrapper" method="post" action="/ACETOwebkalender/a/b.xhtml" enctype="application/x-www-form-urlencoded">
Die äußeren Seiten der Slider Revolution Responsive WordPress Plugin verwendet, die jQuery.ajax
verwendet. Kann dies das Problem hervorrufen?
Dieses Problem tritt nur in IE11 und Safari auf, wenn die Seite mit iFrame in eine andere Seite eingebettet ist.
Aktualisierter kompletter Stapel-Trace –
Sie haben Recht, das Entfernen von OmniFaces behebt dieses Problem nicht. –
Das ist nicht der Fall. Der Beitrag wurde aktualisiert. –