Werner Punz created MYFACES-4742:
------------------------------------

             Summary: ViewExpired Exception on simple ajax request in current 
master branch
                 Key: MYFACES-4742
                 URL: https://issues.apache.org/jira/browse/MYFACES-4742
             Project: MyFaces Core
          Issue Type: Bug
    Affects Versions: 5.0.0
            Reporter: Werner Punz
         Attachments: image-2026-02-07-20-47-59-972.png

I have a simple example which triggers a view expired exception despite the 
request sending correct viewstate data. The example works on all branches 
except the current main branch!

 
{code:java}
// code placeholder
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";
      xmlns:h="jakarta.faces.html"
      xmlns:ui="jakarta.faces.facelets"
      xmlns:f="jakarta.faces.core">

<ui:composition template="./resources/templates/template.xhtml">
    <ui:define name="content">

        <h:form id="form1">
            <h:commandScript name="callBeanAction"
                             action="#{commandScriptBean.doAction()}"
                             render="form1:result"
                             execute="@this" />

            <h:outputText id="result" value="#{commandScriptBean.message}" />
            <br />
            <button type="button" onclick="callBeanAction()">
                Call Action via h:commandScript
            </button>
        </h:form>

    </ui:define>
</ui:composition>
</html>
 {code}
{code:java}
// code placeholder
package extras.apache.org.jsintegration.protocol;

import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Named;
import java.io.Serializable;

@RequestScoped
@Named
public class CommandScriptBean implements Serializable {

    private String message = "No action called yet.";

    public void doAction() {
        System.out.println("doAction triggered via h:commandScript");
        message = "Action was called successfully!";
    }

    public String getMessage() {
        return message;
    }
}
 {code}
the error message is a classical viewExpired Exception:

SCHWERWIEGEND: jakarta.faces.application.ViewExpiredException occurred while 
processing RESTORE_VIEW [Location=]
jakarta.faces.application.ViewExpiredException: View "/commandscript.jsf" could 
not be restored.
        at 
org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:183)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:195)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:137)
        at 
org.apache.myfaces.webapp.FacesServletImpl.service(FacesServletImpl.java:163)
        at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:102)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
        at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400)
        at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739)
        at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at 
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:1474)

 

And the request however is absolutely correct:

!image-2026-02-07-20-47-59-972.png|width=572,height=229!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to