removed tutorial in favor of putting tutorial in samples repo

This commit is contained in:
Keith Donald
2009-03-27 17:05:19 +00:00
parent 21c284e374
commit 995bf9036c
46 changed files with 1 additions and 1922 deletions

View File

@@ -6,8 +6,7 @@
<pathelement location="../spring-js"/>
<pathelement location="../spring-webflow"/>
<pathelement location="../spring-faces"/>
<pathelement location="../spring-webflow-library"/>
<pathelement location="../spring-webflow-samples/getting-started-with-spring-webflow"/>
<pathelement location="../spring-webflow-library"/>
<pathelement location="../spring-webflow-samples/booking-faces"/>
<pathelement location="../spring-webflow-samples/booking-mvc"/>
</path>

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry exported="true" kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>getting-started-with-spring-webflow</name>
<comment></comment>
<projects>
<project>Servers</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.core.springbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
<nature>org.springframework.ide.eclipse.core.springnature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
</natures>
</projectDescription>

View File

@@ -1,12 +0,0 @@
#Tue Mar 17 10:00:21 EDT 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5

View File

@@ -1,3 +0,0 @@
#Tue Mar 17 09:59:19 EDT 2009
classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.launching.macosx.MacOSXType\:\:JVM\ 1.5.0\ (MacOS\ X\ Default)/owners=jst.java\:5.0
eclipse.preferences.version=1

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="getting-started-with-spring-webflow">
<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<property name="java-output-path" value="target/classes"/>
<property name="context-root" value="getting-started-with-spring-webflow"/>
</wb-module>
</project-modules>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="jst.web"/>
<fixed facet="jst.java"/>
<installed facet="jst.java" version="5.0"/>
<installed facet="jst.web" version="2.5"/>
</faceted-project>

View File

@@ -1,6 +0,0 @@
#Fri Jun 06 17:00:12 BST 2008
DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;
USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;
USER_PREFERENCE=overrideGlobalPreferencesfalse
eclipse.preferences.version=1

View File

@@ -1,9 +0,0 @@
#Tue Mar 17 14:28:16 EDT 2009
activeProfiles=
eclipse.preferences.version=1
fullBuildGoals=process-test-resources
includeModules=false
resolveWorkspaceProjects=true
resourceFilterGoals=process-resources resources\:testResources
skipCompilerPlugin=true
version=1

View File

@@ -1,3 +0,0 @@
#Wed Dec 17 01:09:03 EST 2008
eclipse.preferences.version=1
org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false

View File

@@ -1,67 +0,0 @@
#Tue Mar 17 10:00:21 EDT 2009
eclipse.preferences.version=1
org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=false
org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true
org.springframework.ide.eclipse.core.enable.project.preferences=false
org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.server.quickfix.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importLibraryVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importPackageVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.requireBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true
org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
<version>1</version>
<pluginVersion><![CDATA[2.2.2.RC]]></pluginVersion>
<configSuffixes>
<configSuffix><![CDATA[xml]]></configSuffix>
</configSuffixes>
<enableImports><![CDATA[true]]></enableImports>
<configs>
</configs>
<configSets>
</configSets>
</beansProjectDescription>

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<webflow-project-description>
<version>1</version>
<pluginVersion><![CDATA[2.2.2.RC]]></pluginVersion>
<configs>
<config>
<file>src/main/webapp/WEB-INF/tutorial/tutorial-flow.xml</file>
<name><![CDATA[tutorial-flow]]></name>
</config>
</configs>
</webflow-project-description>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="getting-started-with-spring-webflow">
<property name="source.version" value="1.5"/>
<property name="ivy.cache.dir" value="${basedir}/../../ivy-cache"/>
<property name="integration.repo.dir" value="${basedir}/../../integration-repo"/>
<property file="${basedir}/../../build.properties"/>
<import file="${basedir}/../../spring-build/war/default.xml"/>
</project>

View File

@@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
<ivy-module
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
version="1.3">
<info organisation="org.springframework.webflow.samples" module="${ant.project.name}">
<license name="Apache 2.0" url="http://www.apache.org/licenses/LICENSE-2.0"/>
<ivyauthor name="Keith Donald"/>
</info>
<configurations>
<include file="${spring.build.dir}/common/default-ivy-configurations.xml"/>
</configurations>
<publications>
<artifact name="${ant.project.name}" type="war" ext="war"/>
<artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
</publications>
<dependencies>
<!-- core dependencies -->
<dependency org="javax.servlet" name="com.springsource.javax.servlet" rev="2.4.0" conf="provided->runtime"/>
<dependency org="javax.servlet" name="com.springsource.javax.servlet.jsp" rev="2.1.0" conf="provided->runtime"/>
<dependency org="javax.servlet" name="com.springsource.javax.servlet.jsp.jstl" rev="1.1.2" conf="compile->runtime"/>
<dependency org="org.apache.log4j" name="com.springsource.org.apache.log4j" rev="1.2.15" conf="compile->runtime"/>
<dependency org="org.apache.taglibs" name="com.springsource.org.apache.taglibs.standard" rev="1.1.2" conf="compile->runtime"/>
<dependency org="org.ognl" name="com.springsource.org.ognl" rev="2.6.9" conf="compile->runtime"/>
<dependency org="org.springframework" name="org.springframework.beans" rev="2.5.6.A" conf="compile->runtime"/>
<dependency org="org.springframework" name="org.springframework.context" rev="2.5.6.A" conf="compile->runtime"/>
<dependency org="org.springframework" name="org.springframework.core" rev="2.5.6.A" conf="compile->runtime"/>
<dependency org="org.springframework" name="org.springframework.web" rev="2.5.6.A" conf="compile->runtime"/>
<dependency org="org.springframework" name="org.springframework.web.servlet" rev="2.5.6.A" conf="compile->runtime"/>
<dependency org="org.springframework.webflow" name="org.springframework.js" rev="latest.integration" conf="compile->runtime"/>
<dependency org="org.springframework.webflow" name="org.springframework.webflow" rev="latest.integration" conf="compile->runtime"/>
<!-- test-time only dependencies -->
<dependency org="org.junit" name="com.springsource.junit" rev="3.8.2" conf="test->runtime"/>
</dependencies>
</ivy-module>

View File

@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.webflow.samples</groupId>
<artifactId>getting-started-with-spring-webflow</artifactId>
<name>Getting Started with Spring Web Flow</name>
<packaging>war</packaging>
<version>2.0.7-SNAPSHOT</version>
<properties>
<spring.version>2.5.6</spring.version>
<webflow.version>2.0.6.RELEASE</webflow.version>
</properties>
<dependencies>
<!-- Compile dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>2.6.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-js</artifactId>
<version>${webflow.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-webflow</artifactId>
<version>${webflow.version}</version>
</dependency>
<!-- Container-provided dependencies-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -1,21 +0,0 @@
package org.springframework.webflow.samples.gettingstarted;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.RequestToViewNameTranslator;
/**
* Handles requests for the application welcome page.
*/
@Controller
public class WelcomeController {
/**
* Simply selects the welcome view to render by returning void and relying
* on the default {@link RequestToViewNameTranslator}.
*/
@RequestMapping(method = RequestMethod.GET)
public void welcome() {
}
}

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<logger name="org.springframework.binding">
<level value="info" />
</logger>
<logger name="org.springframework.webflow">
<level value="info" />
</logger>
<logger name="org.springframework.js">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- Scans within the base package of the application for @Components to configure as beans -->
<context:component-scan base-package="org.springframework.webflow.samples.gettingstarted" />
</beans>

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- HANDLER MAPPING RULES -->
<!-- Maps requests to flows in the flowRegistry; for example, a request for resource /hotels/booking maps to a flow with id "hotels/booking"
If no flow is found with that id, Spring MVC proceeds to the next HandlerMapping (order=1 below). -->
<bean id="flowMappings" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name="order" value="0" />
<property name="flowRegistry" ref="flowRegistry" />
</bean>
<!-- Maps requests to @Controllers based on @RequestMapping("path") annotation values
If no annotation-based path mapping is found, Spring MVC proceeds to the next HandlerMapping (order=2 below). -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="1" />
</bean>
<!-- Maps requests to @Controllers based on controller class name convention; e.g. a request for /hotels or a /hotels sub-resource maps to HotelsController
If no class mapping is found, Spring MVC sends a 404 response and logs a pageNotFound warning. -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="order" value="2" />
</bean>
<!-- REGISTERED HANDLER TYPES -->
<!-- Enables annotated @Controllers; responsible for invoking an annotated POJO @Controller when one is mapped. -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- Enables web flows; responsible for calling the Spring Web Flow system to execute a flow when one is mapped. -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor" />
</bean>
<!-- Note: all Spring MVC request HandlerAdapters above must be explicitly registered now that we are now overriding the defaults to plug-in the FlowHandlerAdapter -->
<!-- VIEW RESOLUTION AND RENDERING -->
<!-- Resolves view names to protected .jsp resources within the /WEB-INF directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:webflow="http://www.springframework.org/schema/webflow-config"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
<!-- Configures the engine that executes web flows in this application -->
<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry" />
<!-- Registers the web flows that can be executed -->
<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/" flow-builder-services="flowBuilderServices">
<!-- Register all flow definitions within the /WEB-INF directory ending in "-flow.xml" -->
<webflow:flow-location-pattern value="**/*-flow.xml" />
</webflow:flow-registry>
<!-- Configures settings used to build web flow definitions; development=true enables flow definition refresh on change -->
<webflow:flow-builder-services id="flowBuilderServices" development="true" />
</beans>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<view-state id="webflowProjectOverview">
<transition on="next" to="webflowExercise" />
</view-state>
<view-state id="webflowExercise">
<transition on="next" to="webflowWhatsNext" />
</view-state>
<view-state id="webflowWhatsNext">
<transition on="finish" to="finish" />
</view-state>
<end-state id="finish" view="externalRedirect:welcome" />
</flow>

View File

@@ -1,292 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Getting Started with Spring Web Flow: Creating Your First Web Flow</title>
<link rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/styles/tutorial.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/dojox/highlight/resources/highlight.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/dojox/highlight/resources/pygments/ide.css"/>" type="text/css" />
<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js"/>"></script>
</head>
<body class="tundra">
<a href="http://www.springsource.org"><img src="<c:url value="/resources/images/logo.png"/>"/></a>
<h1>
Creating Your First Web Flow
</h1>
<div id="section1" class="section">
<h2>Create your project</h2>
<div id="environments">
<div id="sts">
<ol>
<li>
Download the Eclipse IDE for Spring Developers, called the <a href="http://www.springsource.com/products/sts">SpringSource Tool Suite</a> (STS).
After downloading completes, extract the archive to your directory of choice.
</li>
<li>
Open STS and access File -&gt; New -&gt; Other... -&gt; SpringSource Tool Suite -&gt; Template Project.
Select "Web Flow Project" and enter helloworld for your project name.
Select the Embedded Apache Tomcat as your project's targeted server runtime.
Finish the new project wizard.
</li>
<li>
Next, right-click on your project in your Package Explorer view, and select Run On Server.
You should see your application's welcome page appear in the embedded web browser.
Alternatively, you can access your application in an external browser such as Firefox at <a href="http://localhost:8080/helloworld">http://localhost:8080/helloworld</a>
</li>
</ol>
</div>
<div id="command-line">
<ol>
<li>TODO</li>
</ol>
</div>
</div>
</div>
<div id="section2" class="section">
<h2>Create your first helloworld flow</h2>
<ol>
<li>
Create a new directory for your flow inside <span class="file">/src/main/webapp/WEB-INF</span>; name the directory <span class="file">helloworld</span>.
Right-click on the directory and access New -&gt; Spring Web Flow Definition.
Enter the filename <span class="file">helloworld-flow.xml</span> and finish.
The flow definition will be generated for you with an initial view-state named start.
</li>
<li>
Go ahead and create a <span class="file">start.jsp</span> in your flow directory and paste in the following:
<pre>
<code>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello world!&lt;/title&gt;
&lt;/head&gt;
&lt;h1&gt;Hello world!&lt;/h1&gt;
&lt;/html&gt;
</code>
</pre>
</li>
<li>
From the Servers view, restart your server, then startup your flow by accessing <a href="http://localhost:8080/getting-started-with-spring-webflow/app/helloworld">http://localhost:8080/getting-started-with-spring-webflow/app/helloworld</a>.
You should see your Hello world! message display.
Note you only have to restart your server when you add new flows to the system. When you change flows, changes will be refreshed automatically.
</li>
</ol>
</div>
<div id="section3" class="section">
<h2>Add a page navigation rule</h2>
<ol>
<li>
Next, try transitioning your flow from one state to another to implement a navigation rule. In your helloworld flow, add the following transition to your start view-state:
<pre>
<code>
&lt;transition on="submit" to="page2" /&gt;
</code>
</pre>
Then define your page2 view-state:
<pre>
<code>
&lt;view-state id="page2"&gt;
&lt;/view-state&gt;
</code>
</pre>
And the corresponding page2.jsp:
<pre>
<code>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello world!&lt;/title&gt;
&lt;/head&gt;
&lt;h1&gt;This is page 2!&lt;/h1&gt;
&lt;/html&gt;
</code>
</pre>
Finally, create a button on your <span class="file">start.jsp</span> that raises the submit event to trigger the state transition:
<pre>
<code>
&lt;form method="post"&gt;
&lt;input type="submit" name="_eventId_submit" value="Submit" /&gt;
&lt;/form&gt;
</code>
</pre>
Click the button and you should be taken to page 2.
</li>
</ol>
</div>
<div id="section4" class="section">
<h2>Add a dynamic page navigation rule</h2>
<p>
Web flow excels at implementing dynamic navigation logic that takes a user through different paths based on what they enter or who they are.
</p>
<ol>
<li>
Try implementing a dynamic navigation rule by first adding a bound checkbox to your <span class="file">start.jsp</span>.
Do this by replacing its contents with the following snippet:
<pre>
<code>
&lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello world!&lt;/title&gt;
&lt;/head&gt;
&lt;h1&gt;Hello world!&lt;/h1&gt;
&lt;form:form method="post" modelAttribute="helloWorldForm"&gt;
&lt;form:checkbox path="selected" /&gt;
&lt;input type="submit" name="_eventId_submit" value="Submit" /&gt;
&lt;/form:form&gt;
&lt;/html&gt;
</code>
</pre>
</li>
<li>
Next, create a <span class="file">HelloWorldForm</span> class in the <span class="file">org.springframework.webflow.samples.helloworld</span> package with the following code:
<pre>
<code>
package org.springframework.webflow.samples.helloworld;
import java.io.Serializable;
public class HelloWorldForm implements Serializable {
private boolean selected = true;
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
</code>
</pre>
</li>
<li>
At the top of your helloworld-flow, declare the HelloWorldForm as a flow variable:
<pre>
<code>
&lt;var name="helloWorldForm" class="org.springframework.webflow.samples.helloworld.HelloWorldForm" /&gt;
</code>
</pre>
Then update your start view-state to use this variable as its data model, enabling automatic model binding and validation:
<pre>
<code>
&lt;view-state id="start" model="helloWorldForm"&gt; ...
</code>
</pre>
<p>
Refresh your flow and the checkbox should render checked since the default value for the HelloWorldForm selected property is true.
Uncheck the box and submit and go back in your browser and the unchecked status should be preserved.
</p>
</li>
<li>
Now insert a decision state that says if the checkbox is selected goto page2, else goto a new page3:
<pre>
<code>
&lt;decision-state id="isSelected"&gt;
&lt;if test="helloWorldForm.selected" then="page2" else="page3" /&gt;
&lt;/decision-state&gt;
&lt;view-state id="page2"&gt;
&lt;/view-state&gt;
&lt;view-state id="page3"&gt;
&lt;/view-state&gt;
</code>
</pre>
Be sure to update your start view-state to transition to the isSelected decision state instead of page2 directly:
<pre>
<code>
&lt;view-state id="start"&gt;
&lt;transition on="submit" to="isSelected" /&gt;
&lt;/view-state&gt;
</code>
</pre>
Click the Submit button with the checkbox selected and you should be taken to page2.
Click the button with the checkbox de-selected and you should be taken to page3 (you'll need to create a JSP or you'll get a 404).
</li>
</ol>
</div>
<div id="section5" class="section">
<h2>Finish your helloworld flow</h2>
<ol>
<li>
Finish up your helloworld flow by adding another button on the <span class="file">start.jsp</span> that ends the flow:
<pre>
<code>
&lt;input type="submit" name="_eventId_finish" value="Finish" /&gt;
</code>
</pre>
In your start view-state, declare the finish transition:
<pre>
<code>
&lt;transition on="finish" to="finished" /&gt;
</code>
</pre>
And finally define the end-state:
<pre>
<code>
&lt;end-state id="finished" view="externalRedirect:welcome" /&gt;
</code>
</pre>
Click the Finish button and you should be taken back to the application welcome screen.
</li>
</ol>
</div>
<div id="section6" class="section">
<h2>Visualize the flow</h2>
<ol>
<li>
In your IDE, navigate to your <span class="file">helloworld-flow.xml</span> in the Spring Explorer view, or within the Spring Elements node of the Project Explorer view.
Right-click on the file and select Open Graphical Editor. Your graph should look similar to the visualization below:<br/><br/>
<img src="<c:url value="/resources/images/tutorial/helloworld-flow.png"/>"/>
</li>
</ol>
</div>
<div id="commandBar">
<p>
<a href="tutorial?execution=${flowExecutionKey}&_eventId=next">Next &gt;</a>
</p>
</div>
</body>
<script type="text/javascript">
dojo.require("dojox.highlight.languages.xml");
dojo.addOnLoad(function(){
dojo.query("code").forEach(dojox.highlight.init);
});
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "sts",
widgetType : "dijit.layout.ContentPane",
widgetAttrs : {
title: "SpringSource Tool Suite",
selected: "true"
}
}));
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "command-line",
widgetType : "dijit.layout.ContentPane",
widgetAttrs : {
title: "Command line"
}
}));
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "environments",
widgetType : "dijit.layout.TabContainer",
widgetAttrs : {
style: "width: 100%; height: 200px;"
}
}));
dojo.query('.section > h2').forEach(function(titleElement){
Spring.addDecoration(new Spring.ElementDecoration({
elementId : titleElement.parentNode.id,
widgetType : 'dijit.TitlePane',
widgetAttrs : {
title : titleElement.innerHTML,
open : false
}
}));
}).style('display','none');
</script>
</html>

View File

@@ -1,62 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Getting Started with Spring Web Flow: Overview of the Spring Web Flow Project</title>
<link rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/styles/tutorial.css"/>" type="text/css" />
<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js"/>"></script>
</head>
<body class="tundra">
<a href="http://www.springsource.org"><img src="<c:url value="/resources/images/logo.png"/>"/></a>
<h1>
Overview of the Spring Web Flow Project
</h1>
<div id="question1" class="question">
<h2>
What is Spring Web Flow?
</h2>
<p>
Spring Web Flow is a framework for implementing stateful web controllers.
It is a Spring Project and part of Spring's open-source Web Stack.
</p>
</div>
<div id="question2" class="question">
<h2>
When do I use Web Flow?
</h2>
<p>
Use Spring Web Flow when you need to implement a flow that guides your users through a series of screens to complete a business goal.
Web Flow provides a high-level <i>flow definition language</i> for authoring flows that define screen navigation rules.
The framework also cares for managing conversational state and preventing duplicate transactions.
</p>
</div>
<div id="question3" class="question">
<h2>
How does Web Flow relate to other Spring projects?
</h2>
<p>
Spring Web Flow builds on the Spring Framework project, which includes the Spring MVC web framework.
Concretely, Spring Web Flow plugs into Spring MVC as a Controller technology.
A typical Spring-powered web application is implemented using a mix of annotated Spring MVC Controllers and web flows.
In general, use @Controllers for implementing simple, single-request user interactions, and web flows for stateful, multi-step user interactions.
</p>
<p>
A number of other Spring projects also integrate with Spring Web Flow.
The Spring Faces project uses Spring Web Flow as the controller framework to support implementing Spring-powered web applications that use JavaServerFaces (JSF) as the view technology.
Spring Web Flow also provides integration with Spring Security for securing web flows.
</p>
<p>
How Spring Web Flow fits into Spring's layered, a-la-carte "Web Stack" is illustrated below:<br>
<img src="<c:url value="/resources/images/tutorial/spring-web-stack.png" />" />
</p>
</div>
<div id="commandBar">
<p>
<a href="tutorial?execution=${flowExecutionKey}&_eventId=next">Next &gt;</a>
</p>
</div>
</body>
</html>

View File

@@ -1,271 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Getting Started with Spring Web Flow: Setting up Web Flow in a Spring Web Application</title>
<link rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/styles/tutorial.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/dojox/highlight/resources/highlight.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/dojox/highlight/resources/pygments/ide.css"/>" type="text/css" />
<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js"/>"></script>
</head>
<body class="tundra">
<a href="http://www.springsource.org"><img src="<c:url value="/resources/images/logo.png"/>"/></a>
<h1>
Setting up Web Flow in a Spring Web Application
</h1>
<p>
This step covers the one-time configuration required to setup Web Flow up in a Spring web application.
If you prefer to go right to implementing your first flow, you can <a href="tutorial?execution=${flowExecutionKey}&_eventId=next">skip</a> this step.
</p>
<p>
In general, we recommend using a pre-configured project template like the one this tutorial uses as a starting point for your new projects.
When you do that, you will not have to configure Spring yourself--you simply implement your @Controllers and web flows and off you go.
This step does provides useful background information on setting up your own Web Flow project template, and understanding how things work behind the scenes.
</p>
<div id="question1" class="question">
<h2>
What does the configuration of a typical Spring web application look like?
</h2>
<p>
The configuration of every Spring web application starts in web.xml.
There, a Spring MVC DispatcherServlet is defined to process all requests into the application.
The DispatcherServlet itself is configured using a Spring container.
It is responsible for routing web requests to the proper application controllers, such as your Spring MVC @Controllers and web flows.
A typical DispatcherServlet declaration is shown below:
</p>
<pre>
<code>
&lt;!-- The front controller of this Spring MVC application, responsible for handling all application requests --&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
&lt;param-value&gt;
/WEB-INF/spring/*.xml
&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;!-- Map all /app requests to the DispatcherServlet for handling --&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
&lt;url-pattern&gt;/app/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</code>
</pre>
<p>
This DispatcherServlet is configured to process requests into /app/*.
The servlet's configuration is defined in the .xml files in /WEB-INF/spring.
</p>
</div>
<div id="question2" class="question">
<h2>
How are Spring configuration files typically organized?
</h2>
<p>
Inside /WEB-INF/spring, we generally recommend defining a configuration file for your application logic,
and separate configuration files for framework infrastructure. For example:
</p>
<pre>
<code>
/webapp
/WEB-INF
/spring
app-config.xml
mvc-config.xml
webflow-config.xml
web.xml
</code>
</pre>
<p>
The example above shows the configuration for a Spring web application spread across three files.
The app-config.xml file configures your components that carry out application-specific controller, business, and data access logic.
The mvc-config.xml file configures the Spring MVC framework infrastructure, including the properties of the DispatcherServlet.
The webflow-config.xml file configures the Spring Web Flow infrastructure.
</p>
<p>
We also generally recommend using annotations to configure your application components, and externalized XML to configure infrastructure.
This is illustrated in app-config.xml by use of the component-scan directive to scan your classpath for application components to deploy:
</p>
<pre>
<code>
&lt;!-- Scans within the base package of the application for @Components to configure as beans --&gt;
&lt;context:component-scan base-package="org.springframework.webflow.samples.gettingstarted" /&gt;
</code>
</pre>
<p>
With this technique, your Spring configuration is setup once and you generally never have to update your configuration files again as new components are added to your application.
</p>
</div>
<div id="question3" class="question">
<h2>
How do I plug-in Spring Web Flow?
</h2>
<p>
In webflow-config.xml, first define a flow-registry to register the flows you have defined in your application:
</p>
<pre>
<code>
&lt;!-- Registers the web flows that can be executed --&gt;
&lt;webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/"&gt;
&lt;webflow:flow-location-pattern value="**/*-flow.xml" /&gt;
&lt;/webflow:flow-registry&gt;
</code>
</pre>
<p>
The example above scans /WEB-INF looking for -flow.xml files and registers them.
</p>
<p>
Then, define a flow-executor that uses this registry to execute your flows:
</p>
<pre>
<code>
&lt;!-- Configures the engine that executes web flows in this application --&gt;
&lt;webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry" /&gt;
</code>
</pre>
<p>
Finally, in mvc-config.xml plug in adapters to hook the flow-executor into the Spring MVC DispatcherServlet request processing pipeline:
</p>
<pre>
<code>
&lt;!-- Maps requests to flows in the flowRegistry --&gt;
&lt;bean id="flowMappings" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"&gt;
&lt;property name="order" value="0" /&gt;
&lt;property name="flowRegistry" ref="flowRegistry" /&gt;
&lt;/bean&gt;
&lt;!-- Enables Spring Web Flow as a Spring MVC request handler --&gt;
&lt;bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"&gt;
&lt;property name="flowExecutor" ref="flowExecutor" /&gt;
&lt;/bean&gt;
</code>
</pre>
<p>
We also recommend you turn on development mode while developing so you never have to redeploy your application to test changes:
</p>
<pre>
<code>
&lt;webflow:flow-builder-services id="flowBuilderServices" development="true" /&gt;
</code>
</pre>
</div>
<div id="question4" class="question">
<h2>
How do Spring MVC @Controllers and Web Flows co-exist in the same application?
</h2>
<p>
A typical Spring web application consists of a mix of stateless MVC @Controllers and stateful web flows, which are two distinct types of handlers.
When a web request comes in for a resource, the DispatcherServlet figures out which handler should be invoked.
This is done by consulting an ordered chain of HandlerMapping objects configured in your mvc-config.xml.
Generally, the first HandlerMapping consulted is the FlowHandlerMapping, which determines if the requested resource should be handled by a web flow.
If no flow handler is found, the next HandlerMapping in the chain is queried.
This is generally the DefaultAnnotationHandlerMapping, which consults explicit @RequestMapping rules defined inside annotated Spring MVC Controllers.
</p>
<p>
Setting up the HandlerMapping chain is a one-time configuration step, and makes it easy to plug in different types of handlers and mapping strategies.
A typical HandlerMapping chain for Spring web applications looks like:
</p>
<pre>
<code>
&lt;!-- Maps requests to flows in the flowRegistry; for example, a request for resource /hotels/booking maps to a flow with id "hotels/booking"
If no flow is found with that id, Spring MVC proceeds to the next HandlerMapping (order=1 below). --&gt;
&lt;bean id="flowMappings" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"&gt;
&lt;property name="order" value="0" /&gt;
&lt;property name="flowRegistry" ref="flowRegistry" /&gt;
&lt;/bean&gt;
&lt;!-- Maps requests to @Controllers based on @RequestMapping("path") annotation values
If no annotation-based path mapping is found, Spring MVC proceeds to the next HandlerMapping (order=2 below). --&gt;
&lt;bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"&gt;
&lt;property name="order" value="1" /&gt;
&lt;/bean&gt;
</code>
</pre>
<p>
Once a request has been mapped to a handler object such as a @Controller of web flow, the DispatcherServlet uses the HandlerAdapter registered for that kind of handler to invoke it.
This decouples the DispatcherServlet from specific handler implementations, which allows Spring MVC to support different controller technologies in an extensible manner.
As a one-time configuration step, a typical Spring web application registers HandlerAdapters that know how to invoke @Controllers and web flows when they are mapped:
</p>
<pre>
<code>
&lt;!-- Enables annotated @Controllers; responsible for invoking an annotated POJO @Controller when one is mapped. --&gt;
&lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt;
&lt;!-- Enables web flows; responsible for calling the Spring Web Flow system to execute a flow when one is mapped. --&gt;
&lt;bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"&gt;
&lt;property name="flowExecutor" ref="flowExecutor" /&gt;
&lt;/bean&gt;
</code>
</pre>
<p>
To illustrate a typical DispatcherServlet pipeline, the following graphic illustrates the sequence of events that happen in this application when the /tutorial resource is requested, which is handled by the web flow you are interacting with right now:<br>
<img src="<c:url value="/resources/images/tutorial/dispatcher-servlet-flow-handler.png" />" />
</p>
<p>
In this scenario, the FlowHandlerMapping returned the tutorial flow which was then invoked by the FlowHandlerAdapter.
</p>
<p>
The following graphic shows the sequence in this application when the /welcome resource is requested, which is handled by the annotated WelcomeController:<br>
<img src="<c:url value="/resources/images/tutorial/dispatcher-servlet-annotated-controller-handler.png" />" />
</p>
<p>
In this scenario, the FlowHandlerMapping returned null because the /welcome resource was not mapped to a web flow.
The DefaultAnnotationHandlerMapping was then queried and returned the WelcomeController, which was invoked by the AnnotationMethodHandlerAdapter.
</p>
<p>
The main point to understand here is there is one-time configuration that enables full customization of the DispatcherServlet processing pipeline.
Once this configuration is established, you simply create new controllers and web flows, and they get picked up and hooked into the pipeline automatically.
No other configuration is required.
</p>
</div>
<div id="question5" class="question">
<h2>
How are flows authored?
</h2>
<p>
Flow definitions are typically authored in XML documents.
A flow is typically packaged in its own directory inside /WEB-INF, and co-located with its dependent resources such as page templates and message resources.
For example, the tutorial flow you are using right now lives in the /WEB-INF/tutorial directory along with its JSP page templates.
</p>
</div>
<div id="question6" class="question">
<h2>
Why XML?
</h2>
<p>
XML is a good format for expressing structure.
Since a flow definition primarily captures the navigation structure between your pages, XML is a good fit.
XML is not appropriate for general programming.
This is why your flows should invoke actions written in Java or Groovy to carry out application behaviors.
</p>
</div>
<div id="commandBar">
<p>
<a href="tutorial?execution=${flowExecutionKey}&_eventId=next">Next &gt;</a>
</p>
</div>
</body>
<script type="text/javascript">
dojo.query('.question > h2').forEach(function(titleElement){
Spring.addDecoration(new Spring.ElementDecoration({
elementId : titleElement.parentNode.id,
widgetType : 'dijit.TitlePane',
widgetAttrs : {
title : titleElement.innerHTML,
open : false
}
}));
}).style('display','none');
dojo.require("dojox.highlight.languages.xml");
dojo.addOnLoad(function(){
dojo.query("code").forEach(dojox.highlight.init);
});
</script>
</html>

View File

@@ -1,106 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Getting Started with Spring Web Flow: Where To Go From Here</title>
<link rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css"/>" type="text/css" />
<link rel="stylesheet" href="<c:url value="/resources/styles/tutorial.css"/>" type="text/css" />
<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js"/>"></script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js"/>"></script>
</head>
<body class="tundra">
<a href="http://www.springsource.org"><img src="<c:url value="/resources/images/logo.png"/>"/></a>
<h1>
Where To Go with From Here
</h1>
<p>
Spring Web Flow is an extremely powerful and easy to use controller framework. This tutorial has just scratched the surface of what you can do with the technology.
Checkout these additional resources as you continue your Spring Web Flow journey.
</p>
<h2>
Reference Manual
</h2>
<p>
The <a href="http://www.springsource.org/documentation#webflow">Spring Web Flow reference manual</a> is the definitive guide to the Spring Web Flow feature set.
Use it as an up-to-date flow definition language reference, as well as for documentation on the various configuration options.
</p>
<h2>
Samples
</h2>
<p>
<A href="http://www.springsource.org/webflow-samples">Additional samples</a> are available showing Web Flow applied for various use cases.
These samples illustrate additional features such as Hibernate, Security, Ajax, JSF, and Portlet integration.
A natural next step from this tutorial is to walk-through these sample applications, supplementing with reference manual documentation as you go.
</p>
<p>
In addition, this getting-started sample provides a solid template for a new Spring web project that uses Web Flow.
</p>
<h2>
Training
</h2>
<p>
SpringSource offers a comprehensive <a href="http://www.springsource.com/training/rwa001">training course</a> on developing rich web applications with Spring that covers Spring Web Flow in depth.
This training also prepares you to become a <a href="http://www.springsource.com/training/certification">SpringSource Certified Web Specialist</a>.
</p>
<h2>
Community
</h2>
<p>
Spring Web Flow has an vibrant community forum at <a href="http://forum.springsource.org">http://forum.springsource.org</a>.
There you can interact with community members and discuss ways to enhance and improve the project.
We also encourage community members to <a href="http://jira.springframework.org/browse/SWF">submit tickets</a> when they discover bugs, have ideas for enhancements, or wish to contribute patches or documentation.
Web Flow, like all Spring projects, depends you the community to be successful!
</p>
<h2>
Enterprise Support
</h2>
<p>
SpringSource provides 24x7 support on the Spring projects, including Spring Web Flow, as part of <a href="http://www.springsource.com/products/enterprise">SpringSource Enterprise</a>.
This subscription also includes licenses for the SpringSource Tool Suite IDE and SpringSource Application Management Suite.
</p>
<h2>
Related Projects
</h2>
<p>
There are a number of exciting Spring projects that either build on Spring Web Flow or have grown out of the project. Be sure to check out:
</p>
<ul>
<li>
<h3>Spring Faces</h3>
<p>
If JSF is the right choice for your team, <a href="http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/ch12.html">Spring Faces</a> uses Web Flow to make working with JSF more pleasant and more productive.
</p>
</li>
<li>
<h3>Spring JavaScript</h3>
<p>
If you have Ajax requirements, <a href="http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/ch11.html">Spring JavaScript</a> helps you integrate the Dojo Toolkit into your application and provides a simple API for writing unobtrusive JavaScript and implementing common Ajax scenarios.
You can use it inside and outside of a Web Flow environment.
</p>
</li>
<li>
<h3>Spring Security</h3>
<p>
<a href="http://www.springsource.org/spring-security">Spring Security</a> is a comprehensive and portable Java security framework, and Web Flow provides native support for securing flows with this technology.
</p>
</li>
<li>
<h3>Spring BlazeDS Integration</h3>
<p>
The <a href="http://www.springsource.org/spring-flex">Spring BlazeDS Integration</a> project makes it easy to connect a Flex client to a Spring-powered server using Adobe's BlazeDS and LiveCycle DS technologies.
</p>
</li>
</ul>
<p>
We sincerely hope you enjoyed this tutorial. We wish you great success and lots of fun getting results with Spring Web Flow on your development projects!
<br/>
<br/>
Keith Donald<br/>
Spring Web Flow project lead
</p>
<p>
<a href="tutorial?execution=${flowExecutionKey}&_eventId=finish">Finish the tutorial</a>
</p>
</body>
</html>

View File

@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The front controller of this Spring MVC application, responsible for handling all application requests -->
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/*.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all /app requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
<!-- Serves up cached and compressed static content at /resources/* from the webapp root and classpath -->
<servlet>
<servlet-name>Resources Servlet</servlet-name>
<servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<!-- Maps all /resource requests to the ResourceServlet for handling -->
<servlet-mapping>
<servlet-name>Resources Servlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
</web-app>

View File

@@ -1,25 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Getting Started with Spring Web Flow</title>
<link rel="stylesheet" href="<c:url value="/resources/styles/main.css"/>" type="text/css" />
</head>
<body>
<a href="http://www.springsource.org"><img src="<c:url value="/resources/images/logo.png"/>"/></a>
<h1>
Congratulations! You're running Spring!
</h1>
<h2>Welcome to the <i>Getting Started with Spring Web Flow</i> tutorial</h2>
<p>
This tutorial provides a guide to getting up and running with Spring Web Flow in 10 minutes.
The tutorial itself is implemented as a web flow.
Step 1 of the tutorial will provide a brief overview of the Spring Web Flow project.
Future steps will guide you through the basics of integrating Web Flow into your own Spring-powered web application.
Enjoy!
</p>
<p>
<a href="tutorial">Begin the tutorial</a>
</p>
</body>
</html>

View File

@@ -1,12 +0,0 @@
/*
Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.highlight"]){
dojo._hasResource["dojox.highlight"]=true;
dojo.provide("dojox.highlight");
dojo.require("dojox.highlight._base");
}

View File

@@ -1,31 +0,0 @@
-------------------------------------------------------------------------------
dojox.highlight
-------------------------------------------------------------------------------
Version 1.0
Release date: 11/25/2007
-------------------------------------------------------------------------------
Project state:
beta
-------------------------------------------------------------------------------
Credits
Ivan Sagalaev (softwaremaniacs.org) Author
Peter Higgins (dante) Dojo port
-------------------------------------------------------------------------------
Project description
A syntax highlighting engine for the Dojo Toolkit
-------------------------------------------------------------------------------
Dependencies:
dojo base only.
-------------------------------------------------------------------------------
Documentation
-------------------------------------------------------------------------------
Installation instructions
simply get the dojox/highlight folder (and dojox/highlight.js) from the
dojox SVN repository, and include in your page via
dojo.require("dojox.highlight");

View File

@@ -1,326 +0,0 @@
/*
Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.highlight._base"]){
dojo._hasResource["dojox.highlight._base"]=true;
dojo.provide("dojox.highlight._base");
(function(){
var dh=dojox.highlight,_2="\\b(0x[A-Za-z0-9]+|\\d+(\\.\\d+)?)";
dh.constants={IDENT_RE:"[a-zA-Z][a-zA-Z0-9_]*",UNDERSCORE_IDENT_RE:"[a-zA-Z_][a-zA-Z0-9_]*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:_2,APOS_STRING_MODE:{className:"string",begin:"'",end:"'",illegal:"\\n",contains:["escape"],relevance:0},QUOTE_STRING_MODE:{className:"string",begin:"\"",end:"\"",illegal:"\\n",contains:["escape"],relevance:0},BACKSLASH_ESCAPE:{className:"escape",begin:"\\\\.",end:"^",relevance:0},C_LINE_COMMENT_MODE:{className:"comment",begin:"//",end:"$",relevance:0},C_BLOCK_COMMENT_MODE:{className:"comment",begin:"/\\*",end:"\\*/"},HASH_COMMENT_MODE:{className:"comment",begin:"#",end:"$"},C_NUMBER_MODE:{className:"number",begin:_2,end:"^",relevance:0}};
function esc(_3){
return _3.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;");
};
function verifyText(_4){
return dojo.every(_4.childNodes,function(_5){
return _5.nodeType==3||String(_5.nodeName).toLowerCase()=="br";
});
};
function blockText(_6){
var _7=[];
dojo.forEach(_6.childNodes,function(_8){
if(_8.nodeType==3){
_7.push(_8.nodeValue);
}else{
if(String(_8.nodeName).toLowerCase()=="br"){
_7.push("\n");
}else{
throw "Complex markup";
}
}
});
return _7.join("");
};
function buildKeywordGroups(_9){
if(!_9.keywordGroups){
for(var _a in _9.keywords){
var kw=_9.keywords[_a];
if(kw instanceof Object){
_9.keywordGroups=_9.keywords;
}else{
_9.keywordGroups={keyword:_9.keywords};
}
break;
}
}
};
function buildKeywords(_c){
if(_c.defaultMode&&_c.modes){
buildKeywordGroups(_c.defaultMode);
dojo.forEach(_c.modes,buildKeywordGroups);
}
};
var _d=function(_e,_f){
this.langName=_e;
this.lang=dh.languages[_e];
this.modes=[this.lang.defaultMode];
this.relevance=0;
this.keywordCount=0;
this.result=[];
if(!this.lang.defaultMode.illegalRe){
this.buildRes();
buildKeywords(this.lang);
}
try{
this.highlight(_f);
this.result=this.result.join("");
}
catch(e){
if(e=="Illegal"){
this.relevance=0;
this.keywordCount=0;
this.partialResult=this.result.join("");
this.result=esc(_f);
}else{
throw e;
}
}
};
dojo.extend(_d,{buildRes:function(){
dojo.forEach(this.lang.modes,function(_10){
if(_10.begin){
_10.beginRe=this.langRe("^"+_10.begin);
}
if(_10.end){
_10.endRe=this.langRe("^"+_10.end);
}
if(_10.illegal){
_10.illegalRe=this.langRe("^(?:"+_10.illegal+")");
}
},this);
this.lang.defaultMode.illegalRe=this.langRe("^(?:"+this.lang.defaultMode.illegal+")");
},subMode:function(_11){
var _12=this.modes[this.modes.length-1].contains;
if(_12){
var _13=this.lang.modes;
for(var i=0;i<_12.length;++i){
var _15=_12[i];
for(var j=0;j<_13.length;++j){
var _17=_13[j];
if(_17.className==_15&&_17.beginRe.test(_11)){
return _17;
}
}
}
}
return null;
},endOfMode:function(_18){
for(var i=this.modes.length-1;i>=0;--i){
var _1a=this.modes[i];
if(_1a.end&&_1a.endRe.test(_18)){
return this.modes.length-i;
}
if(!_1a.endsWithParent){
break;
}
}
return 0;
},isIllegal:function(_1b){
var _1c=this.modes[this.modes.length-1].illegalRe;
return _1c&&_1c.test(_1b);
},langRe:function(_1d,_1e){
var _1f="m"+(this.lang.case_insensitive?"i":"")+(_1e?"g":"");
return new RegExp(_1d,_1f);
},buildTerminators:function(){
var _20=this.modes[this.modes.length-1],_21={};
if(_20.contains){
dojo.forEach(this.lang.modes,function(_22){
if(dojo.indexOf(_20.contains,_22.className)>=0){
_21[_22.begin]=1;
}
});
}
for(var i=this.modes.length-1;i>=0;--i){
var m=this.modes[i];
if(m.end){
_21[m.end]=1;
}
if(!m.endsWithParent){
break;
}
}
if(_20.illegal){
_21[_20.illegal]=1;
}
var t=[];
for(i in _21){
t.push(i);
}
_20.terminatorsRe=this.langRe("("+t.join("|")+")");
},eatModeChunk:function(_26,_27){
var _28=this.modes[this.modes.length-1];
if(!_28.terminatorsRe){
this.buildTerminators();
}
_26=_26.substr(_27);
var _29=_28.terminatorsRe.exec(_26);
if(!_29){
return {buffer:_26,lexeme:"",end:true};
}
return {buffer:_29.index?_26.substr(0,_29.index):"",lexeme:_29[0],end:false};
},keywordMatch:function(_2a,_2b){
var _2c=_2b[0];
if(this.lang.case_insensitive){
_2c=_2c.toLowerCase();
}
for(var _2d in _2a.keywordGroups){
if(_2c in _2a.keywordGroups[_2d]){
return _2d;
}
}
return "";
},buildLexemes:function(_2e){
var _2f={};
dojo.forEach(_2e.lexems,function(_30){
_2f[_30]=1;
});
var t=[];
for(var i in _2f){
t.push(i);
}
_2e.lexemsRe=this.langRe("("+t.join("|")+")",true);
},processKeywords:function(_33){
var _34=this.modes[this.modes.length-1];
if(!_34.keywords||!_34.lexems){
return esc(_33);
}
if(!_34.lexemsRe){
this.buildLexemes(_34);
}
_34.lexemsRe.lastIndex=0;
var _35=[],_36=0,_37=_34.lexemsRe.exec(_33);
while(_37){
_35.push(esc(_33.substr(_36,_37.index-_36)));
var _38=this.keywordMatch(_34,_37);
if(_38){
++this.keywordCount;
_35.push("<span class=\""+_38+"\">"+esc(_37[0])+"</span>");
}else{
_35.push(esc(_37[0]));
}
_36=_34.lexemsRe.lastIndex;
_37=_34.lexemsRe.exec(_33);
}
_35.push(esc(_33.substr(_36,_33.length-_36)));
return _35.join("");
},processModeInfo:function(_39,_3a,end){
var _3c=this.modes[this.modes.length-1];
if(end){
this.result.push(this.processKeywords(_3c.buffer+_39));
return;
}
if(this.isIllegal(_3a)){
throw "Illegal";
}
var _3d=this.subMode(_3a);
if(_3d){
_3c.buffer+=_39;
this.result.push(this.processKeywords(_3c.buffer));
if(_3d.excludeBegin){
this.result.push(_3a+"<span class=\""+_3d.className+"\">");
_3d.buffer="";
}else{
this.result.push("<span class=\""+_3d.className+"\">");
_3d.buffer=_3a;
}
this.modes.push(_3d);
this.relevance+=typeof _3d.relevance=="number"?_3d.relevance:1;
return;
}
var _3e=this.endOfMode(_3a);
if(_3e){
_3c.buffer+=_39;
if(_3c.excludeEnd){
this.result.push(this.processKeywords(_3c.buffer)+"</span>"+_3a);
}else{
this.result.push(this.processKeywords(_3c.buffer+_3a)+"</span>");
}
while(_3e>1){
this.result.push("</span>");
--_3e;
this.modes.pop();
}
this.modes.pop();
this.modes[this.modes.length-1].buffer="";
return;
}
},highlight:function(_3f){
var _40=0;
this.lang.defaultMode.buffer="";
do{
var _41=this.eatModeChunk(_3f,_40);
this.processModeInfo(_41.buffer,_41.lexeme,_41.end);
_40+=_41.buffer.length+_41.lexeme.length;
}while(!_41.end);
if(this.modes.length>1){
throw "Illegal";
}
}});
function replaceText(_42,_43,_44){
if(String(_42.tagName).toLowerCase()=="code"&&String(_42.parentNode.tagName).toLowerCase()=="pre"){
var _45=document.createElement("div"),_46=_42.parentNode.parentNode;
_45.innerHTML="<pre><code class=\""+_43+"\">"+_44+"</code></pre>";
_46.replaceChild(_45.firstChild,_42.parentNode);
}else{
_42.className=_43;
_42.innerHTML=_44;
}
};
function highlightStringLanguage(_47,str){
var _49=new _d(_47,str);
return {result:_49.result,langName:_47,partialResult:_49.partialResult};
};
function highlightLanguage(_4a,_4b){
var _4c=highlightStringLanguage(_4b,blockText(_4a));
replaceText(_4a,_4a.className,_4c.result);
};
function highlightStringAuto(str){
var _4e="",_4f="",_50=2,_51=str;
for(var key in dh.languages){
if(!dh.languages[key].defaultMode){
continue;
}
var _53=new _d(key,_51),_54=_53.keywordCount+_53.relevance,_55=0;
if(!_4e||_54>_55){
_55=_54;
_4e=_53.result;
_4f=_53.langName;
}
}
return {result:_4e,langName:_4f};
};
function highlightAuto(_56){
var _57=highlightStringAuto(blockText(_56));
if(_57.result){
replaceText(_56,_57.langName,_57.result);
}
};
dh.processString=function(str,_59){
return _59?highlightStringLanguage(_59,str):highlightStringAuto(str);
};
dh.init=function(_5a){
if(dojo.hasClass(_5a,"no-highlight")){
return;
}
if(!verifyText(_5a)){
return;
}
var _5b=_5a.className.split(/\s+/),_5c=dojo.some(_5b,function(_5d){
if(_5d.charAt(0)!="_"&&dh.languages[_5d]){
highlightLanguage(_5a,_5d);
return true;
}
return false;
});
if(!_5c){
highlightAuto(_5a);
}
};
dh.Code=function(_5e,_5f){
dh.init(_5f);
};
})();
}

View File

@@ -1,14 +0,0 @@
/*
Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.highlight.languages.pygments.xml"]){
dojo._hasResource["dojox.highlight.languages.pygments.xml"]=true;
dojo.provide("dojox.highlight.languages.pygments.xml");
dojo.require("dojox.highlight._base");
dojox.highlight.languages.pygments.xml={a:1};
dojox.highlight.languages.xml={defaultMode:{contains:["name entity","comment","comment preproc","_tag"]},modes:[{className:"comment",begin:"<!--",end:"-->"},{className:"comment preproc",begin:"\\<\\!\\[CDATA\\[",end:"\\]\\]\\>"},{className:"comment preproc",begin:"\\<\\!",end:"\\>"},{className:"comment preproc",begin:"\\<\\?",end:"\\?\\>",relevance:5},{className:"string",begin:"'",end:"'",illegal:"\\n",relevance:0},{className:"string",begin:"\"",end:"\"",illegal:"\\n",relevance:0},{className:"name entity",begin:"\\&[a-z]+;",end:"^"},{className:"name tag",begin:"\\b[a-z0-9_\\:\\-]+\\b",end:"^"},{className:"name attribute",begin:"\\b[a-z0-9_\\:\\-]+=",end:"^",relevance:0},{className:"_tag",begin:"\\<",end:"\\>",contains:["name tag","name attribute","string"]},{className:"_tag",begin:"\\</",end:"\\>",contains:["name tag"]}]};
}

View File

@@ -1,19 +0,0 @@
/*
Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.highlight.languages.xml"]){
dojo._hasResource["dojox.highlight.languages.xml"]=true;
dojo.provide("dojox.highlight.languages.xml");
dojo.require("dojox.highlight._base");
(function(){
var _1={className:"comment",begin:"<!--",end:"-->"};
var _2={className:"attribute",begin:" [a-zA-Z-]+=",end:"^",contains:["value"]};
var _3={className:"value",begin:"\"",end:"\""};
var dh=dojox.highlight,_5=dh.constants;
dh.languages.xml={defaultMode:{contains:["pi","comment","cdata","tag"]},case_insensitive:true,modes:[{className:"pi",begin:"<\\?",end:"\\?>",relevance:10},_1,{className:"cdata",begin:"<\\!\\[CDATA\\[",end:"\\]\\]>"},{className:"tag",begin:"</?",end:">",contains:["title","tag_internal"],relevance:1.5},{className:"title",begin:"[A-Za-z:_][A-Za-z0-9\\._:-]+",end:"^",relevance:0},{className:"tag_internal",begin:"^",endsWithParent:true,contains:["attribute"],relevance:0,illegal:"[\\+\\.]"},_2,_3],XML_COMMENT:_1,XML_ATTR:_2,XML_VALUE:_3};
})();
}

View File

@@ -1,51 +0,0 @@
.string,
.function .title,
.class .title,
.tag .attribute .value,
.css .rules .value,
.preprocessor,
.ruby .symbol,
.ruby .instancevar,
.ruby .class .parent,
.built_in,
.sql .aggregate,
.django .template_tag,
.django .variable,
.smalltalk .class {
color: #800;
}
.comment,
.java .annotation,
.template_comment {
color: #888;
}
.number,
.regexp,
.javascript .literal,
.smalltalk .symbol,
.smalltalk .char {
color: #080;
}
.javadoc,
.ruby .string,
.python .decorator,
.django .filter .argument,
.smalltalk .localvars,
.smalltalk .array,
.css .attr_selector,
.xml .pi {
color: #88F;
}
.keyword,
.css .id,
.phpdoc,
.function .title,
.class .title,
.vbscript .built_in,
.sql .aggregate,
.rsl .built_in,
.smalltalk .class,
.xml .tag .title {
font-weight: bold;
}

View File

@@ -1,78 +0,0 @@
/*
Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>
*/
pre code {
display: block;
border:1px dashed #aaaaaa;
overflow:auto;
background-color: #f4f4f4;
color:#444444;
padding:3px;
whitespace:pre;
}
.subst, .title {
font-weight: normal;
color: #000;
}
.comment, .template_comment, .javadoc, .diff .header {
color: #808080;
font-style: italic;
}
.annotation, .decorator, .preprocessor, .doctype, .pi, .chunk, .shebang, .apache .cbracket {
color: #808000;
}
.tag, .pi {
background: #f4f4f4;
}
.tag .title, .id, .attr_selector, .literal, .keyword, .hexcolor, .css .function, .ini .title, .css .class, .list .title {
font-weight: bold;
color: #000080;
}
.attribute, .rules .keyword, .number, .date, .regexp {
font-weight: bold;
color: #0000ff;
}
.number, .regexp {
font-weight: normal;
}
.string, .value, .filter .argument, .css .function .params, .apache .tag {
color: #008000;
font-weight: bold;
}
.symbol, .char {
color: #000;
background: #d0eded;
font-style: italic;
}
.phpdoc, .javadoctag {
text-decoration: underline;
}
.variable, .envvar, .apache .sqbracket {
color: #660e7a;
}
.addition {
background: #baeeba;
}
.deletion {
background: #ffc8bd;
}
.diff .change {
background: #bccff9;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,4 +0,0 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<c:redirect url="/app/welcome" />

View File

@@ -1,17 +0,0 @@
@IMPORT url("main.css");
.dijitTitlePane + .dijitTitlePane {
padding-top: 1em;
}
.dojoTabPane {
overflow: auto;
}
.file {
font-family: monospace;
}
ol li {
padding-bottom: 1em;
}

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="debug" />
</logger>
<logger name="org.springframework.binding">
<level value="debug" />
</logger>
<logger name="org.springframework.webflow">
<level value="debug" />
</logger>
<logger name="org.springframework.js">
<level value="debug" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>

View File

@@ -1,7 +1,6 @@
/*
* spring-webflow-samples
* ----------------------
* getting-started-with-spring-webflow: Starter application template for Spring MVC and Web Flow
* booking-mvc: Hotel Booking Reference App (Spring MVC + Web Flow + JSP version)
* booking-faces: Hotel Booking Reference App (Spring MVC + Web Flow + JavaServerFaces version)
* booking-portlet-mvc: Hotel Booking Reference App (Spring Portlet MVC + Web Flow + JSP version)