Author: rich
Date: Tue Aug 24 16:20:52 2004
New Revision: 36828

Added:
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml  
 (contents, props changed)
Modified:
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
   incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
   
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
Log:
    - Added a compile-time check to enforce that there is only one 
@Jpf.MessageResource annotation with no "bundleKey" attribute, i.e., that there 
is only one which is used as the default.
    - Fixed to prevent incorrect warnings about nonexistant .jpf files when 
they are referenced with relative URIs in @Jpf.Forward annotations.
    - When instantiating a Control member field in a page flow, changed to 
include the request scope-ID in the control-ID when the request is a 
ScopedRequest.  This prevents duplicate-control exceptions for the same 
control-type/pageflow-type in two separate ScopedRequests.
    - Made the ActionInterceptorChain (and all related classes) serializable, 
so they can be stored safely in Servlet objects that may need to 
serialize/deserialize.
    - Made displayName/displayNameKey mutually exclusive on 
@Jpf.ValidatableProperty.
    - Enabled a basic JSF/JPF test.  In order to run this, you need to point 
the JSF_HOME environment variable to the root of an expanded JSF 1.1 Reference 
Implementation distribution.  Then, do 'ant clean build start&' in 
netui/test/webapps/jsf, and hit 
http://localhost:8080/jsfWeb/jpfFaces/JpfFacesController.jpf.

DRT: netui (WinXP)
BB: self (linux)



Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
     Tue Aug 24 16:20:52 2004
@@ -887,7 +887,7 @@
     public static TypeDeclaration inferTypeFromPath( String 
pathFromWebappRoot, AnnotationProcessorEnvironment env )
     {
         assert pathFromWebappRoot.startsWith( "/" ) : pathFromWebappRoot;
-        String className =  removeFileExtension( pathFromWebappRoot.substring( 
1 ) );
+        String className = removeFileExtension( pathFromWebappRoot.substring( 
1 ) );
         return env.getTypeDeclaration( className.replace( '/', '.' ) );
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
     Tue Aug 24 16:20:52 2004
@@ -72,8 +72,8 @@
         _exceptionHandlerGrammar =
         new ExceptionHandlerGrammar( getEnv(), getDiagnostics(), 
getRuntimeVersionChecker(), _fcInfo );
         _formBeanChecker = new FormBeanChecker( getEnv(), getDiagnostics() );
-        getFlowControllerInfo().setWebappRoot( getWebappRoot() );
         
+        _fcInfo.setWebappRoot( getWebappRoot() );
         _fcInfo.startBuild();
         
         //

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
        Tue Aug 24 16:20:52 2004
@@ -25,6 +25,8 @@
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
 import java.io.File;
 
 import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_FULL_CLASSNAME;
@@ -46,6 +48,7 @@
     private File _sourceFile;
     private boolean _isBuilding = false;
     private String _controllerClassName = null;
+    private Map< String, String > _messageResourcesByKey = new HashMap< 
String, String >();
 
     
     public static class ActionInfo
@@ -271,5 +274,15 @@
     public String getControllerClassName()
     {
         return _controllerClassName;
+    }
+
+    public Map< String, String > getMessageResourcesByKey()
+    {
+        return _messageResourcesByKey;
+    }
+
+    public void addMessageResource( String key, String name )
+    {
+        _messageResourcesByKey.put( key, name );
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   Tue Aug 24 16:20:52 2004
@@ -246,7 +246,7 @@
         public JpfControllerGrammar()
         {
             super( PageFlowChecker.this.getEnv(), 
PageFlowChecker.this.getDiagnostics(),
-                   PageFlowChecker.this.getRuntimeVersionChecker(), 
getFlowControllerInfo() );
+                   PageFlowChecker.this.getRuntimeVersionChecker(), 
PageFlowChecker.this.getFlowControllerInfo() );
             addMemberType( NESTED_ATTR, new AnnotationMemberType( null, this ) 
);
             addMemberType( SINGLETON_ATTR, new SingletonAttrType() );
         }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
 (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
 Tue Aug 24 16:20:52 2004
@@ -141,3 +141,6 @@
 warning.using-default-display-name = \
 This rule uses the default message and does not provide a first argument, and 
the parent {0} annotation does not
 specify a display name.  A default display name will be used.
+
+error.multiple-default-message-resources = \
+There may only be one default message resource bundle.  All others must 
specify the {0} attribute.

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
     Tue Aug 24 16:20:52 2004
@@ -29,7 +29,7 @@
 
 
 public class ActionGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { 
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
 
@@ -37,7 +37,7 @@
     public ActionGrammar( AnnotationProcessorEnvironment env, Diagnostics 
diags,
                           RuntimeVersionChecker rvc, FlowControllerInfo fcInfo 
)
     {
-        super( env, diags, null, rvc );
+        super( env, diags, null, rvc, fcInfo );
         
         addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null, 
this ) );
         addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null, 
this ) );

Added: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
 Tue Aug 24 16:20:52 2004
@@ -0,0 +1,44 @@
+/*
+ * B E A   S Y S T E M S
+ * Copyright 2002-2004  BEA Systems, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.compiler.grammar;
+
+import org.apache.beehive.netui.compiler.AnnotationGrammar;
+import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
+import org.apache.beehive.netui.compiler.FlowControllerInfo;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+
+public class BaseFlowControllerGrammar
+        extends AnnotationGrammar
+{
+    private FlowControllerInfo _flowControllerInfo;
+    
+    public BaseFlowControllerGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags,
+                                      String requiredRuntimeVersion, 
RuntimeVersionChecker runtimeVersionChecker,
+                                      FlowControllerInfo flowControllerInfo )
+    {
+        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+        _flowControllerInfo = flowControllerInfo;
+    }
+
+    protected FlowControllerInfo getFlowControllerInfo()
+    {
+        return _flowControllerInfo;
+    }
+}

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
      Tue Aug 24 16:20:52 2004
@@ -42,7 +42,7 @@
 
 
 public class CatchGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { PATH_ATTR, 
METHOD_ATTR } };
     private static String[][] REQUIRED_ATTRS = { { TYPE_ATTR }, { PATH_ATTR, 
METHOD_ATTR } };
@@ -54,7 +54,7 @@
                          RuntimeVersionChecker runtimeVersionChecker, String 
annotationRootName,
                          FlowControllerInfo fcInfo )
     {
-        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker, 
fcInfo );
         
         _annotationRootName = annotationRootName;   // the parent of the list 
of @Jpf.Catch annotations.
         addMemberType( METHOD_ATTR, new CatchTagMethodType() );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
 Tue Aug 24 16:20:52 2004
@@ -18,7 +18,6 @@
  */
 package org.apache.beehive.netui.compiler.grammar;
 
-import org.apache.beehive.netui.compiler.AnnotationGrammar;
 import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
 import org.apache.beehive.netui.compiler.AnnotationMemberType;
 import org.apache.beehive.netui.compiler.FlowControllerInfo;
@@ -31,14 +30,14 @@
 
 
 public class ControllerGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {    
     private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { 
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
  
     public ControllerGrammar( AnnotationProcessorEnvironment env, Diagnostics 
diags, RuntimeVersionChecker rvc,
                               FlowControllerInfo fcInfo )
     {
-        super( env, diags, null, rvc );
+        super( env, diags, null, rvc, fcInfo );
         
         addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null, 
this ) );
         addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null, 
this ) );
@@ -48,7 +47,7 @@
         
         addMemberArrayGrammar( FORWARDS_ATTR, new ForwardGrammar( env, diags, 
null, rvc, fcInfo ) );
         addMemberArrayGrammar( CATCHES_ATTR, new CatchGrammar( env, diags, 
null, rvc, CONTROLLER_TAG_NAME, fcInfo ) );
-        addMemberArrayGrammar( MESSAGE_RESOURCES_ATTR, new 
MessageResourcesGrammar( env, diags, null, rvc ) );
+        addMemberArrayGrammar( MESSAGE_RESOURCES_ATTR, new 
MessageResourcesGrammar( env, diags, null, rvc, fcInfo ) );
         addMemberArrayGrammar( VALIDATABLE_BEANS_ATTR, new 
ValidationBeanGrammar( env, diags, rvc ) );
         addMemberArrayGrammar( SIMPLE_ACTIONS_ATTR, new SimpleActionGrammar( 
env, diags, rvc, fcInfo ) );
     }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
   Tue Aug 24 16:20:52 2004
@@ -40,12 +40,12 @@
 
 
 public class ExceptionHandlerGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     public ExceptionHandlerGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags,
                                     RuntimeVersionChecker 
runtimeVersionChecker, FlowControllerInfo fcInfo )
     {
-        super( env, diags, null, runtimeVersionChecker );
+        super( env, diags, null, runtimeVersionChecker, fcInfo );
         
         addMemberType( READONLY_ATTR, new AnnotationMemberType( 
VERSION_8_SP2_STRING, this ) );
         addMemberArrayGrammar( FORWARDS_ATTR, new 
ExceptionHandlerForwardGrammar( fcInfo ) );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
    Tue Aug 24 16:20:52 2004
@@ -18,7 +18,6 @@
  */
 package org.apache.beehive.netui.compiler.grammar;
 
-import org.apache.beehive.netui.compiler.AnnotationGrammar;
 import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
 import org.apache.beehive.netui.compiler.AnnotationMemberType;
 import org.apache.beehive.netui.compiler.CompilerUtils;
@@ -43,7 +42,7 @@
 
 
 public class ForwardGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     private static final String[][] NAVIGATE_TO_VALS = new String[][]
             {
@@ -77,14 +76,11 @@
                 { RESTORE_QUERY_STRING_ATTR, NAVIGATE_TO_ATTR }
             };
     
-    private FlowControllerInfo _fcInfo;
-    
     
     public ForwardGrammar( AnnotationProcessorEnvironment env, Diagnostics 
diags, String requiredRuntimeVersion,
                            RuntimeVersionChecker runtimeVersionChecker, 
FlowControllerInfo fcInfo )
     {
-        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
-        _fcInfo = fcInfo;
+        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker, 
fcInfo );
         
         addMemberType( NAME_ATTR, getNameType() );
         addMemberType( OUTPUT_FORM_BEAN_TYPE_ATTR, new TypeNameType( null, 
false, null, this ) );
@@ -166,7 +162,7 @@
             
             String actionName = ( String ) value.getValue();
             String formTypeName = formBeanType != null ? 
formBeanType.getDeclaration().getQualifiedName() : null;
-            _fcInfo.addReturnAction( actionName, formTypeName );
+            getFlowControllerInfo().addReturnAction( actionName, formTypeName 
);
         }
         
         //
@@ -178,7 +174,7 @@
             
             if ( uri.endsWith( JPF_FILE_EXTENSION_DOT ) && uri.indexOf( ':' ) 
== -1 )
             {
-                _fcInfo.addReferencedPageFlowURI( uri );
+                getFlowControllerInfo().addReferencedPageFlowURI( uri );
             }
         }
     }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
   Tue Aug 24 16:20:52 2004
@@ -21,22 +21,30 @@
 import org.apache.beehive.netui.compiler.AnnotationGrammar;
 import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
 import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.CompilerUtils;
+import org.apache.beehive.netui.compiler.FlowControllerInfo;
 import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.AnnotationMirror;
+import com.sun.mirror.declaration.MemberDeclaration;
 
 import static org.apache.beehive.netui.compiler.JpfLanguageConstants.NAME_ATTR;
 import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.MESSAGE_RESOURCES_ATTR;
 import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.BUNDLE_KEY_ATTR;
 
+import java.util.Map;
+import java.util.List;
+
 
 public class MessageResourcesGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     private static String[][] REQUIRED_ATTRS = { { NAME_ATTR } };
     
     public MessageResourcesGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags,
-                                    String requiredRuntimeVersion, 
RuntimeVersionChecker runtimeVersionChecker )
+                                    String requiredRuntimeVersion, 
RuntimeVersionChecker runtimeVersionChecker,
+                                    FlowControllerInfo fcInfo )
     {
-        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+        super( env, diags, requiredRuntimeVersion, runtimeVersionChecker, 
fcInfo );
         
         addMemberType( NAME_ATTR,
                        new UniqueValueType( MESSAGE_RESOURCES_ATTR, false, 
false, null, this ) );
@@ -55,6 +63,32 @@
 
     public String[][] getAttrDependencies()
     {
+        return null;
+    }
+
+    protected Object onEndCheck( AnnotationMirror annotation, 
AnnotationMirror[] parentAnnotations,
+                                 MemberDeclaration classMember, Map 
checkResults )
+    {
+        String name = CompilerUtils.getString( annotation, NAME_ATTR, false );
+        String bundleKey = CompilerUtils.getString( annotation, 
BUNDLE_KEY_ATTR, false );
+        
+        if ( bundleKey.length() == 0 )
+        {
+            List< AnnotationMirror > peerAnnotations =
+                    CompilerUtils.getAnnotationArray( parentAnnotations[0], 
MESSAGE_RESOURCES_ATTR, false );
+            
+            for ( AnnotationMirror peerAnnotation : peerAnnotations )
+            {
+                if ( ! CompilerUtils.annotationsAreEqual(  annotation, 
peerAnnotation )
+                     && CompilerUtils.getString( peerAnnotation, 
BUNDLE_KEY_ATTR, false ).length() == 0 )
+                {
+                    addError( annotation, 
"error.multiple-default-message-resources", BUNDLE_KEY_ATTR );
+                }
+            }
+        }
+        
+        getFlowControllerInfo().addMessageResource( bundleKey, name );
+        
         return null;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
       Tue Aug 24 16:20:52 2004
@@ -34,7 +34,7 @@
 
 
 public class SimpleActionGrammar
-        extends AnnotationGrammar
+        extends BaseFlowControllerGrammar
 {
     private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { 
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
     
@@ -44,7 +44,7 @@
     public SimpleActionGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags, RuntimeVersionChecker rvc,
                                 FlowControllerInfo fcInfo )
     {
-        super( env, diags, VERSION_9_0_STRING, rvc );
+        super( env, diags, VERSION_9_0_STRING, rvc, fcInfo );
         
         addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null, 
this ) );
         addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null, 
this ) );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
    Tue Aug 24 16:20:52 2004
@@ -29,13 +29,12 @@
 
 import static org.apache.beehive.netui.compiler.JpfLanguageConstants.*;
 
-import java.util.List;
-
 
 public class ValidationFieldGrammar
         extends AnnotationGrammar
 {
     private static String[][] REQUIRED_ATTRS = { { PROPERTY_NAME_ATTR } };
+    private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { 
DISPLAY_NAME_ATTR, DISPLAY_NAME_KEY_ATTR } };
     
     
     public ValidationFieldGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags, RuntimeVersionChecker rvc )
@@ -67,6 +66,11 @@
     public String[][] getRequiredAttrs()
     {
         return REQUIRED_ATTRS;
+    }
+
+    public String[][] getMutuallyExclusiveAttrs()
+    {
+        return MUTUALLY_EXCLUSIVE_ATTRS;
     }
 
     protected boolean onBeginCheck( AnnotationMirror annotation, 
AnnotationMirror[] parentAnnotations,

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
    Tue Aug 24 16:20:52 2004
@@ -140,8 +140,8 @@
             if ( stringValue.endsWith( JPF_FILE_EXTENSION_DOT ) )
             {
                 String className = stringValue.substring( 0, 
stringValue.length() - JPF_FILE_EXTENSION_DOT.length() );
-                className = 
classMember.getDeclaringType().getPackage().getQualifiedName()
-                            + '.' + className.replace( '/', '.' );
+                String pkg = 
classMember.getDeclaringType().getPackage().getQualifiedName();
+                className = ( pkg.length() > 0 ? pkg + '.' : "" ) + 
className.replace( '/', '.' );
                 TypeDeclaration type = getEnv().getTypeDeclaration( className 
);
                 fileToCheck = type != null ? CompilerUtils.getOriginalFile( 
type ) : null;
                 if ( fileToCheck == null ) fileExists = false;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
     Tue Aug 24 16:20:52 2004
@@ -18,8 +18,9 @@
  */
 package org.apache.beehive.netui.pageflow;
 
-import org.apache.struts.upload.MultipartRequestWrapper;
 import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
+import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
+import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 import org.apache.beehive.netui.util.logging.Logger;
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 import org.apache.beehive.controls.api.properties.PropertyMap;
@@ -133,24 +134,10 @@
      */ 
     private void initJavaControls( HttpServletRequest request, 
HttpServletResponse response )
     {
-        //
-        // First, unwrap the request if it's a MultipartRequestWrapper.  
MultipartRequestWrapper is a Struts
-        // class that does *not* extend HttpServletRequestWrapper, and which 
thus causes KNEX pain when it
-        // tries to unwrap it.
-        //
-        if ( request instanceof MultipartRequestWrapper )
-        {
-            request = ( ( MultipartRequestWrapper ) request ).getRequest();
-        }
-        
         Map controlFields = 
JavaControlUtils.getAccessibleControlFieldAnnotations( getClass() );
+        if ( controlFields.isEmpty() ) return;
 
-        if ( controlFields.isEmpty() )
-        {
-            return;
-        }
-
-        String className = getClass().getName();
+        request = PageFlowUtils.unwrapMultipart( request );
         ControlBeanContext beanContext = 
JavaControlUtils.getControlBeanContext( request, response, false );
         assert beanContext != null : "ControlBeanContext was not initialized 
by PageFlowRequestProcessor";
         
@@ -160,7 +147,7 @@
             Field field = ( Field ) entry.getKey();
 
             //
-            // We don't want the field to be transient -- the proxy should not 
go away when this
+            // We don't want the field to be transient -- the reference should 
not go away when this
             // object is serialized/deserialized.  The checker should enforce 
this.
             //
             assert ! Modifier.isTransient( field.getModifiers() ) : 
field.getName();
@@ -177,8 +164,8 @@
                     
                     PropertyMap propertyMap = ( PropertyMap ) entry.getValue();
                     Class fieldType = field.getType();
+                    String controlID = getControlID( field, request );
                     boolean isControlBeanClass = ! fieldType.isInterface();
-                    String controlID = className + '.' + field.getName();
                     ControlBean bean = JavaControlUtils.createControl( 
fieldType.getName(), isControlBeanClass,
                                                                        
controlID, propertyMap, beanContext );
                     field.set( this, bean );
@@ -195,6 +182,18 @@
         }
     }
 
+    private String getControlID( Field controlField, HttpServletRequest 
request )
+    {
+        StringBuilder controlID = new StringBuilder();
+        ScopedRequest scopedRequest = ScopedServletUtils.unwrapRequest( 
request );
+        
+        // If this is a ScopedRequest, include the request's scope key in the 
control ID.
+        if ( scopedRequest != null ) controlID.append( 
scopedRequest.getScopeKey() ).append( ':' );
+        controlID.append( getClass().getName() ).append( '.' );
+        controlID.append( controlField.getName() );
+        return controlID.toString();
+    }
+    
     /**
      * Clean up all member variables that are Java Controls.
      */ 

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
   Tue Aug 24 16:20:52 2004
@@ -28,8 +28,15 @@
 {
     /**
      * Initialize.
+     * 
      * @param servletContext the ServletContext for the webapp that is 
creating this object.
      */
     public void init( ServletContext servletContext );
     
+    /**
+     * Reinitialize, normally used to reconsitute transient data that was lost 
during serialization.
+     * 
+     * @param servletContext the ServletContext for the webapp that is 
reinitializing this object.
+     */
+    public void reinit( ServletContext servletContext );
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
        Tue Aug 24 16:20:52 2004
@@ -27,6 +27,7 @@
 import java.util.Map;
 import java.util.ArrayList;
 import java.util.concurrent.ConcurrentHashMap;
+import java.io.Serializable;
 
 
 /**
@@ -35,6 +36,7 @@
  * @exclude
  */ 
 public class ActionInterceptorChain
+        implements Serializable
 {
     private ActionInterceptor[] _actionInterceptors;
     

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
  Tue Aug 24 16:20:52 2004
@@ -18,11 +18,14 @@
  */
 package org.apache.beehive.netui.pageflow.interceptor;
 
+import java.io.Serializable;
+
 
 /**
  * @exclude
  */ 
 class ActionInterceptorChainConfig
+        implements Serializable
 {
     private ActionInterceptorConfig[] _interceptors;
 

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
       Tue Aug 24 16:20:52 2004
@@ -18,11 +18,14 @@
  */
 package org.apache.beehive.netui.pageflow.interceptor;
 
+import java.io.Serializable;
+
 
 /**
  * Configuration object used to initialize an [EMAIL PROTECTED] 
ActionInterceptor}.
  */ 
 public class ActionInterceptorConfig
+        implements Serializable
 {
     private String _interceptorClass;
 

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
      Tue Aug 24 16:20:52 2004
@@ -21,11 +21,14 @@
 import org.apache.beehive.netui.util.config.ConfigUtil;
 import org.apache.beehive.netui.util.config.bean.PageflowActionInterceptors;
 
+import java.io.Serializable;
+
 
 /**
  * @exclude
  */ 
 class ActionInterceptorsConfig
+        implements Serializable
 {
     private ActionInterceptorChainConfig _beforeAllActions;
     private ActionInterceptorChainConfig _afterAllActions;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
     Tue Aug 24 16:20:52 2004
@@ -33,6 +33,8 @@
 
 import javax.servlet.ServletContext;
 import java.io.Serializable;
+import java.util.List;
+import java.util.ArrayList;
 
 
 public class ContextCache implements Serializable, PageFlowConstants
@@ -53,6 +55,7 @@
     private LoginHandler _loginHandler = null;
     private ReloadableClassHandler _reloadableClassHandler = null;
     private ExceptionsHandler _exceptionsHandler = null;
+    private transient ServletContext _servletContext;
     
     
     public ForwardRedirectHandler getForwardRedirectHandler()
@@ -95,9 +98,19 @@
             return init( servletContext );
         }
         
+        cache.reinit( servletContext );       
         return cache;
     }
     
+    private void reinit( ServletContext servletContext )
+    {
+        _servletContext = servletContext;
+        _exceptionsHandler.reinit( servletContext );
+        _forwardRedirectHandler.reinit( servletContext );
+        _loginHandler.reinit( servletContext );
+        _reloadableClassHandler.reinit( servletContext );
+    }
+    
     public static ContextCache init( ServletContext servletContext )
     {
         ContextCache cache = new ContextCache( servletContext );
@@ -107,6 +120,8 @@
     
     private ContextCache( ServletContext servletContext )
     {
+        _servletContext = servletContext;
+        
         String doSecureForwards = servletContext.getInitParameter( 
SECURE_FORWARDS_PARAM );
         _secureForwards = ( Boolean.TRUE.toString().equals( doSecureForwards ) 
);
         

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
   Tue Aug 24 16:20:52 2004
@@ -21,15 +21,16 @@
 import org.apache.beehive.netui.pageflow.handler.Handler;
 
 import javax.servlet.ServletContext;
+import java.io.Serializable;
 
 
 /**
  * Default implementation of the base Handler interface.  Simply stores a 
reference to the ServletContext.
  */
 public class DefaultHandler
-        implements Handler
+        implements Handler, Serializable
 {
-    private ServletContext _servletContext;
+    private transient ServletContext _servletContext;
     
     
     /**
@@ -44,6 +45,12 @@
     
     protected final ServletContext getServletContext()
     {
+        assert _servletContext != null;
         return _servletContext;
+    }
+
+    public void reinit( ServletContext servletContext )
+    {
+        _servletContext = servletContext;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
      Tue Aug 24 16:20:52 2004
@@ -32,7 +32,8 @@
  * Implements default J2EE web-tier login handling.
  */ 
 public class DefaultLoginHandler
-    implements LoginHandler, Serializable
+        extends DefaultHandler
+        implements LoginHandler, Serializable
 {
     public void init( ServletContext servletContext )
     {

Modified: incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml       
(original)
+++ incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml       
Tue Aug 24 16:20:52 2004
@@ -11,12 +11,10 @@
        <param-value>true</param-value>
     </context-param>
 
-<!--
     <context-param>
         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
         <param-value>client</param-value>
     </context-param>
--->
 
     <context-param>
         <param-name>com.sun.faces.validateXml</param-name>
@@ -56,12 +54,10 @@
     
<filter-class>org.apache.beehive.netui.pageflow.PageFlowJspFilter</filter-class>
   </filter>
 
-<!--
   <filter-mapping>
     <filter-name>TestRecorderFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
--->
 
   <filter-mapping>
     <filter-name>PageFlowJspFilter</filter-name>

Modified: 
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
   Tue Aug 24 16:20:52 2004
@@ -71,5 +71,13 @@
                 <category>drt</category>
             </categories>
         </test>
+        <test>
+            <name>JpfFaces</name>
+            <description>Test of basic JSF / page flow integration, including 
raising actions and passing forms from JSF pages and backing 
files.</description>
+            <webapp>jsfWeb</webapp>
+            <categories>
+                <category>drt</category>
+            </categories>
+        </test>
     </tests>
 </testDefinitions>

Added: 
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml  
    Tue Aug 24 16:20:52 2004
@@ -0,0 +1,816 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>JpfFaces</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>23 Aug 2004, 01:32:40.097 PM MDT</ses:startDate>
+   <ses:description>Test of basic JSF / page flow integration, including 
raising actions and passing forms from JSF pages and backing 
files.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/JpfFacesController.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 1&lt;/h3>
+    
+        &lt;form id="go2form" method="post" 
action="/jsfWeb/jpfFaces/page1.faces" 
enctype="application/x-www-form-urlencoded">
+
+               &lt;input id="go2form:foo" type="text" name="go2form:foo" />
+            &lt;br/>
+            &lt;a id="go2form:go2button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button'; 
document.forms['go2form'].submit(); return false;">go to page2 (pass a 
form)&lt;/a>
+                - type "stay" to make the CommandHandler return null
+            &lt;br/>
+            &lt;a id="go2form:go3button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button'; 
document.forms['go2form'].submit(); return false;">go to page3 (no form)&lt;/a>
+            &lt;br/>
+            &lt;a id="go2form:go4button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button'; 
document.forms['go2form'].submit(); return false;">go to page4 (no 
CommandHandler)&lt;/a>
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
 />
+ &lt;input type="hidden" name="go2form" value="go2form" />&lt;input 
type="hidden" name="go2form:_idcl" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form</ses:name>
+                  <ses:value>go2form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:_idcl</ses:name>
+                  <ses:value>go2form:go2button</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:foo</ses:name>
+                  <ses:value>stay</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>3700</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/JpfFacesController.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 1&lt;/h3>
+    
+        &lt;form id="go2form" method="post" 
action="/jsfWeb/jpfFaces/page1.faces" 
enctype="application/x-www-form-urlencoded">
+
+               &lt;input id="go2form:foo" type="text" name="go2form:foo" 
value="stay" />
+            &lt;br/>
+            &lt;a id="go2form:go2button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button'; 
document.forms['go2form'].submit(); return false;">go to page2 (pass a 
form)&lt;/a>
+                - type "stay" to make the CommandHandler return null
+            &lt;br/>
+            &lt;a id="go2form:go3button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button'; 
document.forms['go2form'].submit(); return false;">go to page3 (no form)&lt;/a>
+            &lt;br/>
+            &lt;a id="go2form:go4button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button'; 
document.forms['go2form'].submit(); return false;">go to page4 (no 
CommandHandler)&lt;/a>
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
 />
+ &lt;input type="hidden" name="go2form" value="go2form" />&lt;input 
type="hidden" name="go2form:_idcl" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form</ses:name>
+                  <ses:value>go2form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:_idcl</ses:name>
+                  <ses:value>go2form:go2button</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:foo</ses:name>
+                  <ses:value>no stay</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>3703</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 2&lt;/h3>
+    
+        Message from page flow: &lt;i>&lt;span id="msg">got form; bar was 'no 
stay'&lt;/span>&lt;/i>
+        &lt;br/>
+
+        &lt;form id="go1form" method="post" 
action="/jsfWeb/jpfFaces/page2.faces" 
enctype="application/x-www-form-urlencoded">
+
+            &lt;input id="go1form:go1button" type="submit" 
name="go1form:go1button" value="back to page 1" />
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcQB+AABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHRwdAADbXNnc3EAfgAAc3EAfgAFAAAAAXcEAAAACnNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnB0AAlnbzFidXR0b254dAAjamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbEZvcm1wdAAHZ28xZm9ybXh0ACBqYXZheC5mYWNlcy5jb21wb25lbnQuVUlWaWV3Um9vdHBwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnVxAH4AEgAAAAR1cQB+ABIAAAAIc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0ACRqYXZheC5mYWNlcy53ZWJhcHAuQ1VSUkVOVF9WSUVXX1JPT1RxAH4AGHhwcHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHABc3EAfgAZAHBwdAAKSFRNTF9CQVNJQ3QAEy9qcGZGYWNlcy9wYWdlMi5qc3BzcgAQamF2YS51dGlsLkxvY2FsZX74EWCcMPnsAgAESQAIaGFzaGNvZGVMAAdjb3VudHJ5cQB+AAJMAAhsYW5ndWFnZXEAfgACTAAHdmFyaWFudHEAfgACeHD/////dAAAdAACZW5xAH4AIHVxAH4AEgAAAAJ1cQB+ABIAAAACdXEAfgASAAAABnVxAH4AEgAAAAN1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHVxAH4AEgAAAAJ1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAABdAAFdmFsdWV1cQB+ABIAAAABc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAIWNvbS5zdW4uZmFjZXMuZWwuVmFsdWVCaW5kaW5nSW1wbHQAFHJlcXVlc3RTY29wZS5tZXNzYWdldAADbXNncQB+AAlxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuVGV4dHBwcHEAfgAacQB+ABtwcHB1cQB+ABIAAAAAdXEAfgASAAAAAnVxAH4AEgAAABZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAABdAAgamF2YXguZmFjZXMud2ViYXBwLkNPTVBPTkVOVF9JRFNzcQB+AAUAAAABdwQAAAAKcQB+AA54eHB0AAdnbzFmb3JtcQB+ABBxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuRm9ybXBwcHB0ACFhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRwcHBwcHBwcHBwcHBwcHBwcHVxAH4AEgAAAAF1cQB+ABIAAAACdXEAfgASAAAAHXVxAH4AEgAAAAZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHB0ABFnbzFmb3JtOmdvMWJ1dHRvbnEAfgAOcQB+ABpxAH4AG3QAEmphdmF4LmZhY2VzLkJ1dHRvbnBzcQB+AC10AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ28xcHEAfgAbcQB+ABt0AA5iYWNrIHRvIHBhZ2UgMXBwcHEAfgAbcQB+ABtwcHBwcHBwcHBwcHBwcHBwcQB+ABtxAH4AG3BwcHB0AAZzdWJtaXR1cQB+ABIAAAAA"
 />
+ &lt;input type="hidden" name="go1form" value="go1form" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page2.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcQB+AABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHRwdAADbXNnc3EAfgAAc3EAfgAFAAAAAXcEAAAACnNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnB0AAlnbzFidXR0b254dAAjamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbEZvcm1wdAAHZ28xZm9ybXh0ACBqYXZheC5mYWNlcy5jb21wb25lbnQuVUlWaWV3Um9vdHBwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnVxAH4AEgAAAAR1cQB+ABIAAAAIc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0ACRqYXZheC5mYWNlcy53ZWJhcHAuQ1VSUkVOVF9WSUVXX1JPT1RxAH4AGHhwcHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHABc3EAfgAZAHBwdAAKSFRNTF9CQVNJQ3QAEy9qcGZGYWNlcy9wYWdlMi5qc3BzcgAQamF2YS51dGlsLkxvY2FsZX74EWCcMPnsAgAESQAIaGFzaGNvZGVMAAdjb3VudHJ5cQB+AAJMAAhsYW5ndWFnZXEAfgACTAAHdmFyaWFudHEAfgACeHD/////dAAAdAACZW5xAH4AIHVxAH4AEgAAAAJ1cQB+ABIAAAACdXEAfgASAAAABnVxAH4AEgAAAAN1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHVxAH4AEgAAAAJ1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAABdAAFdmFsdWV1cQB+ABIAAAABc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAIWNvbS5zdW4uZmFjZXMuZWwuVmFsdWVCaW5kaW5nSW1wbHQAFHJlcXVlc3RTY29wZS5tZXNzYWdldAADbXNncQB+AAlxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuVGV4dHBwcHEAfgAacQB+ABtwcHB1cQB+ABIAAAAAdXEAfgASAAAAAnVxAH4AEgAAABZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAABdAAgamF2YXguZmFjZXMud2ViYXBwLkNPTVBPTkVOVF9JRFNzcQB+AAUAAAABdwQAAAAKcQB+AA54eHB0AAdnbzFmb3JtcQB+ABBxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuRm9ybXBwcHB0ACFhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRwcHBwcHBwcHBwcHBwcHBwcHVxAH4AEgAAAAF1cQB+ABIAAAACdXEAfgASAAAAHXVxAH4AEgAAAAZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHB0ABFnbzFmb3JtOmdvMWJ1dHRvbnEAfgAOcQB+ABpxAH4AG3QAEmphdmF4LmZhY2VzLkJ1dHRvbnBzcQB+AC10AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ28xcHEAfgAbcQB+ABt0AA5iYWNrIHRvIHBhZ2UgMXBwcHEAfgAbcQB+ABtwcHBwcHBwcHBwcHBwcHBwcQB+ABtxAH4AG3BwcHB0AAZzdWJtaXR1cQB+ABIAAAAA</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form</ses:name>
+                  <ses:value>go1form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form:go1button</ses:name>
+                  <ses:value>back to page 1</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>2384</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 1&lt;/h3>
+    
+        &lt;form id="go2form" method="post" 
action="/jsfWeb/jpfFaces/page1.faces" 
enctype="application/x-www-form-urlencoded">
+
+               &lt;input id="go2form:foo" type="text" name="go2form:foo" />
+            &lt;br/>
+            &lt;a id="go2form:go2button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button'; 
document.forms['go2form'].submit(); return false;">go to page2 (pass a 
form)&lt;/a>
+                - type "stay" to make the CommandHandler return null
+            &lt;br/>
+            &lt;a id="go2form:go3button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button'; 
document.forms['go2form'].submit(); return false;">go to page3 (no form)&lt;/a>
+            &lt;br/>
+            &lt;a id="go2form:go4button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button'; 
document.forms['go2form'].submit(); return false;">go to page4 (no 
CommandHandler)&lt;/a>
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
 />
+ &lt;input type="hidden" name="go2form" value="go2form" />&lt;input 
type="hidden" name="go2form:_idcl" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form</ses:name>
+                  <ses:value>go2form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:_idcl</ses:name>
+                  <ses:value>go2form:go3button</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:foo</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>3696</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page2.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 3&lt;/h3>
+    
+        &lt;form id="go1form" method="post" 
action="/jsfWeb/jpfFaces/page3.faces" 
enctype="application/x-www-form-urlencoded">
+
+            &lt;input id="go1form:go1button" type="submit" 
name="go1form:go1button" value="back to page 1" />
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UzLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA="
 />
+ &lt;input type="hidden" name="go1form" value="go1form" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page3.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UzLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA=</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form</ses:name>
+                  <ses:value>go1form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form:go1button</ses:name>
+                  <ses:value>back to page 1</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>1938</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 1&lt;/h3>
+    
+        &lt;form id="go2form" method="post" 
action="/jsfWeb/jpfFaces/page1.faces" 
enctype="application/x-www-form-urlencoded">
+
+               &lt;input id="go2form:foo" type="text" name="go2form:foo" />
+            &lt;br/>
+            &lt;a id="go2form:go2button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button'; 
document.forms['go2form'].submit(); return false;">go to page2 (pass a 
form)&lt;/a>
+                - type "stay" to make the CommandHandler return null
+            &lt;br/>
+            &lt;a id="go2form:go3button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button'; 
document.forms['go2form'].submit(); return false;">go to page3 (no form)&lt;/a>
+            &lt;br/>
+            &lt;a id="go2form:go4button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button'; 
document.forms['go2form'].submit(); return false;">go to page4 (no 
CommandHandler)&lt;/a>
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
 />
+ &lt;input type="hidden" name="go2form" value="go2form" />&lt;input 
type="hidden" name="go2form:_idcl" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>7</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form</ses:name>
+                  <ses:value>go2form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:_idcl</ses:name>
+                  <ses:value>go2form:go4button</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go2form:foo</ses:name>
+                  <ses:value/>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>3696</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page3.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 4&lt;/h3>
+    
+        &lt;form id="go1form" method="post" 
action="/jsfWeb/jpfFaces/page4.faces" 
enctype="application/x-www-form-urlencoded">
+
+            &lt;input id="go1form:go1button" type="submit" 
name="go1form:go1button" value="back to page 1" />
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2U0LmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA="
 />
+ &lt;input type="hidden" name="go1form" value="go1form" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>8</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/jsfWeb/jpfFaces/page4.faces</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>com.sun.faces.VIEW</ses:name>
+                  
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2U0LmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA=</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form</ses:name>
+                  <ses:value>go1form</ses:value>
+               </ses:parameter>
+               <ses:parameter>
+                  <ses:name>go1form:go1button</ses:name>
+                  <ses:value>back to page 1</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>1938</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody>&lt;html>
+    &lt;head> &lt;title>Page Flow / JSF&lt;/title> &lt;/head>
+    &lt;body bgcolor="white">
+    &lt;h3>Page Flow / JSF: page 1&lt;/h3>
+    
+        &lt;form id="go2form" method="post" 
action="/jsfWeb/jpfFaces/page1.faces" 
enctype="application/x-www-form-urlencoded">
+
+               &lt;input id="go2form:foo" type="text" name="go2form:foo" />
+            &lt;br/>
+            &lt;a id="go2form:go2button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button'; 
document.forms['go2form'].submit(); return false;">go to page2 (pass a 
form)&lt;/a>
+                - type "stay" to make the CommandHandler return null
+            &lt;br/>
+            &lt;a id="go2form:go3button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button'; 
document.forms['go2form'].submit(); return false;">go to page3 (no form)&lt;/a>
+            &lt;br/>
+            &lt;a id="go2form:go4button" href="#" 
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button'; 
document.forms['go2form'].submit(); return false;">go to page4 (no 
CommandHandler)&lt;/a>
+         &lt;input type="hidden" name="com.sun.faces.VIEW" 
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
 />
+ &lt;input type="hidden" name="go2form" value="go2form" />&lt;input 
type="hidden" name="go2form:_idcl" />&lt;/form>
+    
+&lt;/HTML></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>23 Aug 2004, 01:33:12.353 PM MDT</ses:endDate>
+   <ses:testCount>8</ses:testCount>
+</ses:recorderSession>

Reply via email to