3 Replies Latest reply on Apr 2, 2008 12:40 PM by pmuir

    Form does not validate on submit, but does on blur

    timony

      Hi,
      when I go through the form by tab key (triggering the onblur), the validations work fine (e.g. for the required fields, or regex and the correct message is displayd next the input field, but when I submit the form, the validations are not employed


      Curious is, that for some jpdl pageflows, the validations work fine


      Does anyone know what is wrong?


      Thanks


      JPDL definition


      <?xml version="1.0"?>
      
      <pageflow-definition xmlns="http://jboss.com/products/seam/pageflow"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-1.2.xsd"
           name="editCompany">
      
           <start-state name="start">
                <transition name="edit" to="edit" />
                <transition name="remove" to="confirmRemove" />
           </start-state>
           
           <page name="edit" view-id="/portfolio/companyEdit.xhtml">
                <redirect />
                <transition name="save" to="saveCompany" />
                <transition name="cancel" to="complete" />
           </page>
      
           <page name="confirmRemove" view-id="/confirm.xhtml">
                <redirect/>
                <transition name="yes" to="completeDelete" >
                     <action expression="#{companyHome.remove}" />
                </transition>
                <transition name="no" to="complete" />
           </page>
           
           <decision name="saveCompany"
                expression="#{companyHome.managed}">
                <transition name="true" to="complete">
                     <action expression="#{companyHome.update}" />
                </transition>
                <transition name="false" to="complete">
                     <action expression="#{companyHome.persist}" />
                </transition>
           </decision>
           
           <page name="complete" view-id="/portfolio/portfolio.xhtml"
                no-conversation-view-id="/portfolio/portfolio.xhtml">
                <redirect />
                <end-conversation />
           </page>
           
           <page name="completeDelete" view-id="/portfolio/portfolio.xhtml"
                no-conversation-view-id="/portfolio/portfolio.xhtml">
                <redirect />
                <end-conversation />
           </page>
      
      </pageflow-definition>
      



      Home object (Seam framework)


      package cz.timony.portfolioManager.session.portfolio;
      
      import java.math.BigDecimal;
      import java.util.ArrayList;
      import java.util.List;
      
      import org.jboss.seam.ScopeType;
      import org.jboss.seam.annotations.Begin;
      import org.jboss.seam.annotations.In;
      import org.jboss.seam.annotations.Name;
      import org.jboss.seam.annotations.Scope;
      import org.jboss.seam.annotations.security.Restrict;
      import org.jboss.seam.annotations.web.RequestParameter;
      import org.jboss.seam.framework.EntityHome;
      
      import cz.timony.portfolioManager.CCConstants;
      import cz.timony.portfolioManager.ejb.portfolio.Company;
      import cz.timony.portfolioManager.ejb.portfolio.Product;
      import cz.timony.portfolioManager.ejb.user.User;
      
      @Name("companyHome")
      @Restrict("#{identity.loggedIn}")
      @Scope(ScopeType.CONVERSATION)
      public class CompanyHome extends EntityHome<Company>
      {
      
          private static final long serialVersionUID = 9057915693870914547L;
      
          @RequestParameter
          Integer companyId;
      
          @RequestParameter
          String action;
      
          @In(value = "currentUser")
          User currentUser;
      
          @In(create = true)
          ProductHome productHome;
      
          @Begin(join = true, pageflow = "editCompany")
          public String start()
          {
              setCompanyId(companyId);
      
              if (action == null || "".equals(action))
              {
                  return CCConstants.OUTCOME_EDIT;
              }
              return action;
          }
      
          public void setCompanyId(Integer companyId)
          {
              if (companyId != null)
              {
                  setId(companyId);
              }
          }
      
          public Integer getCompanyId()
          {
              return (Integer) getId();
          }
      
          @Override
          protected Company createInstance()
          {
              Company company = new Company();
              company.setUser(currentUser);
              return company;
          }
      
          public List<Product> getProducts()
          {
              return getInstance() == null ? null : new ArrayList<Product>(
                      getInstance().getProducts());
          }
      
          public BigDecimal getSumActualStates(Company company)
          {
              BigDecimal sum = new BigDecimal(0);
              for (Product p : company.getProducts())
              {
                  BigDecimal latest = productHome.getLatestState(p.getId())
                          .getValue();
                  sum = sum.add(latest);
              }
              return sum;
          }
      
          public BigDecimal getSumActualStates()
          {
              return getSumActualStates(getInstance());
          }
      
      }



      EJB model class


      package cz.timony.portfolioManager.ejb.portfolio;
      
      import java.io.Serializable;
      import java.util.ArrayList;
      import java.util.Collection;
      
      import javax.persistence.CascadeType;
      import javax.persistence.Column;
      import javax.persistence.Entity;
      import javax.persistence.FetchType;
      import javax.persistence.GeneratedValue;
      import javax.persistence.Id;
      import javax.persistence.ManyToOne;
      import javax.persistence.OneToMany;
      import javax.persistence.Table;
      
      import org.hibernate.validator.NotNull;
      
      import cz.timony.portfolioManager.ejb.Idable;
      import cz.timony.portfolioManager.ejb.user.User;
      import cz.timony.portfolioManager.validation.Required;
      
      @Entity
      @Table(name = "company")
      public class Company implements Serializable, Idable<Integer>
      {
      
          private static final long serialVersionUID = 8106268264760054294L;
      
          @Id
          @GeneratedValue
          @Column(name = "id", unique = true, nullable = false)
          private Integer id;
      
          @NotNull
          @Required
          private String name;
      
          @OneToMany(mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
          private Collection<Product> products = new ArrayList<Product>(0);
      
          @ManyToOne
          @NotNull
          private User user;
      
          public Integer getId()
          {
              return id;
          }
      
          public void setId(Integer id)
          {
              this.id = id;
          }
      
          public String getName()
          {
              return name;
          }
      
          public void setName(String name)
          {
              this.name = name;
          }
      
          public Collection<Product> getProducts()
          {
              return products;
          }
      
          public void setProducts(Collection<Product> products)
          {
              this.products = products;
          }
      
          public User getUser()
          {
              return user;
          }
      
          public void setUser(User user)
          {
              this.user = user;
          }
      
      }
      



      JSF page for edit/insert company


      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
           xmlns:s="http://jboss.com/products/seam/taglib"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:f="http://java.sun.com/jsf/core"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:rich="http://richfaces.org/rich"
           xmlns:a="https://ajax4jsf.dev.java.net/ajax"
           template="../layout/template.xhtml">
      
           <ui:define name="body">
      
                <h:form id="companyEditForm">
      
                     <s:decorate template="../layout/editBox.xhtml" id="editBox">
      
                          <ui:define name="header">
                               <h:outputText value="#{companyHome.managed ? 'messages.label_company_edit': 'messages.label_company_create'}" />
                          </ui:define>
      
                          <ui:define name="buttons">
                               <s:button id="saveCompany" value="#{companyHome.managed ? messages.label_edit : messages.label_create}" action="save" disabled="#{companyBean.validationFailed}" />
                               <s:button id="cancelCompany" value="#{messages.label_cancel}"
                                    action="cancel" />
                          </ui:define>
      
                          <s:decorate id="nameDecoration"
                               template="../layout/edit.xhtml">
                               <ui:define name="label">#{messages.label_name}</ui:define>
                               <h:inputText required="true"
                                    value="#{companyHome.instance.name}">
                                    <a:support event="onblur" reRender="nameDecoration" />
                               </h:inputText>
                          </s:decorate>
                          
                     </s:decorate>
      
                </h:form>
      
           </ui:define>
      
      </ui:composition>
      



      JSF fragment which starts the JPDL edit flow



      <s:button action="#{companyHome.start}" value="#{messages.label_add}" id="newCompany" />











        • 1. Re: Form does not validate on submit, but does on blur
          timony

          I forgot the exception, which is thrown when the form is submited:



          14:30:25,877 ERROR [GraphElement] action threw exception: couldn't evaluate expression '#{companyHome.persist}'
          org.jbpm.JbpmException: couldn't evaluate expression '#{companyHome.persist}'
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:43)
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:30)
               at org.jbpm.graph.def.Action.execute(Action.java:118)
               at org.jboss.seam.bpm.SeamUserCodeInterceptor.executeAction(SeamUserCodeInterceptor.java:70)
               at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:253)
               at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
               at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
               at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
               at org.jbpm.graph.def.Transition.take(Transition.java:138)
               at org.jbpm.graph.def.Node.leave(Node.java:393)
               at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
               at org.jbpm.graph.node.Decision.execute(Decision.java:152)
               at org.jbpm.graph.def.Node.enter(Node.java:318)
               at org.jbpm.graph.def.Transition.take(Transition.java:151)
               at org.jbpm.graph.def.Node.leave(Node.java:393)
               at org.jbpm.graph.exe.Token.signal(Token.java:194)
               at org.jbpm.graph.exe.Token.signal(Token.java:157)
               at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:282)
               at org.jboss.seam.pageflow.Pageflow.signal(Pageflow.java:477)
               at org.jboss.seam.pageflow.Pageflow.navigate(Pageflow.java:336)
               at org.jboss.seam.jsf.SeamNavigationHandler.handleNavigation(SeamNavigationHandler.java:40)
               at org.jboss.seam.navigation.Pages.handleOutcome(Pages.java:594)
               at org.jboss.seam.navigation.Pages.callAction(Pages.java:641)
               at org.jboss.seam.navigation.Pages.preRender(Pages.java:289)
               at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:544)
               at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:455)
               at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:146)
               at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:116)
               at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:222)
               at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
               at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
               at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
               at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
               at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
               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:230)
               at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
               at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
               at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
               at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
               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:157)
               at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
               at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
               at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
               at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
               at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
               at java.lang.Thread.run(Thread.java:619)
          Caused by: javax.el.PropertyNotFoundException: Property 'persist' not found on type cz.timony.portfolioManager.session.portfolio.CompanyHome_$$_javassist_4
               at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
               at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
               at javax.el.BeanELResolver.property(BeanELResolver.java:279)
               at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
               at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
               at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
               at org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
               at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
               at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
               at org.jboss.seam.bpm.SeamExpressionEvaluator$1.evaluate(SeamExpressionEvaluator.java:77)
               at org.jboss.seam.bpm.SeamExpressionEvaluator.evaluate(SeamExpressionEvaluator.java:36)
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:39)
               ... 67 more
          14:30:25,879 ERROR [SeamPhaseListener] uncaught exception
          org.jbpm.JbpmException: couldn't evaluate expression '#{companyHome.persist}'
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:43)
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:30)
               at org.jbpm.graph.def.Action.execute(Action.java:118)
               at org.jboss.seam.bpm.SeamUserCodeInterceptor.executeAction(SeamUserCodeInterceptor.java:70)
               at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:253)
               at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
               at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
               at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
               at org.jbpm.graph.def.Transition.take(Transition.java:138)
               at org.jbpm.graph.def.Node.leave(Node.java:393)
               at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
               at org.jbpm.graph.node.Decision.execute(Decision.java:152)
               at org.jbpm.graph.def.Node.enter(Node.java:318)
               at org.jbpm.graph.def.Transition.take(Transition.java:151)
               at org.jbpm.graph.def.Node.leave(Node.java:393)
               at org.jbpm.graph.exe.Token.signal(Token.java:194)
               at org.jbpm.graph.exe.Token.signal(Token.java:157)
               at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:282)
               at org.jboss.seam.pageflow.Pageflow.signal(Pageflow.java:477)
               at org.jboss.seam.pageflow.Pageflow.navigate(Pageflow.java:336)
               at org.jboss.seam.jsf.SeamNavigationHandler.handleNavigation(SeamNavigationHandler.java:40)
               at org.jboss.seam.navigation.Pages.handleOutcome(Pages.java:594)
               at org.jboss.seam.navigation.Pages.callAction(Pages.java:641)
               at org.jboss.seam.navigation.Pages.preRender(Pages.java:289)
               at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:544)
               at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:455)
               at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:146)
               at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:116)
               at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:222)
               at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
               at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
               at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
               at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
               at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
               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:230)
               at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
               at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
               at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
               at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
               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:157)
               at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
               at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
               at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
               at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
               at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
               at java.lang.Thread.run(Thread.java:619)
          Caused by: javax.el.PropertyNotFoundException: Property 'persist' not found on type cz.timony.portfolioManager.session.portfolio.CompanyHome_$$_javassist_4
               at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
               at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
               at javax.el.BeanELResolver.property(BeanELResolver.java:279)
               at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
               at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
               at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
               at org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
               at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
               at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
               at org.jboss.seam.bpm.SeamExpressionEvaluator$1.evaluate(SeamExpressionEvaluator.java:77)
               at org.jboss.seam.bpm.SeamExpressionEvaluator.evaluate(SeamExpressionEvaluator.java:36)
               at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:39)
               ... 67 more
          14:30:25,902 ERROR [SeamPhaseListener] uncaught exception
          java.lang.IllegalStateException: pageflow has not yet started
               at org.jboss.seam.pageflow.Pageflow.getNode(Pageflow.java:172)
               at org.jboss.seam.pageflow.Pageflow.getPage(Pageflow.java:224)
               at org.jboss.seam.faces.FacesManager.prepareBackswitch(FacesManager.java:239)
               at org.jboss.seam.jsf.SeamPhaseListener.afterRenderResponse(SeamPhaseListener.java:487)
               at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:230)
               at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:184)
               at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
               at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
               at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
               at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
               at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
               at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
               at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
               at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
               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:230)
               at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
               at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
               at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
               at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
               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:157)
               at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
               at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
               at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
               at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
               at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
               at java.lang.Thread.run(Thread.java:619)


          • 2. Re: Form does not validate on submit, but does on blur
            timony

            Hi,
            I was playing around further more with this issue, and noticed that this exception is thrown any time not valid data are sent to the server (e.g. when empty string is sent...)


            Anyone knows? Maybe I have some discrepancy in the pageflow, maybe I havent understand the pageflow issue correctly..


            Thanks Tomas

            • 3. Re: Form does not validate on submit, but does on blur
              pmuir

              <s:button /> doesn't submit the form, use <h:commandButton />