removed tutorial in favor of putting tutorial in samples repo
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -1,2 +0,0 @@
|
||||
<classpath>
|
||||
</classpath>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
#Wed Dec 17 01:09:03 EST 2008
|
||||
eclipse.preferences.version=1
|
||||
org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 -> New -> Other... -> SpringSource Tool Suite -> 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 -> 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>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hello world!</title>
|
||||
</head>
|
||||
<h1>Hello world!</h1>
|
||||
</html>
|
||||
</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>
|
||||
<transition on="submit" to="page2" />
|
||||
</code>
|
||||
</pre>
|
||||
Then define your page2 view-state:
|
||||
<pre>
|
||||
<code>
|
||||
<view-state id="page2">
|
||||
</view-state>
|
||||
</code>
|
||||
</pre>
|
||||
And the corresponding page2.jsp:
|
||||
<pre>
|
||||
<code>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hello world!</title>
|
||||
</head>
|
||||
<h1>This is page 2!</h1>
|
||||
</html>
|
||||
</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>
|
||||
<form method="post">
|
||||
<input type="submit" name="_eventId_submit" value="Submit" />
|
||||
</form>
|
||||
</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>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hello world!</title>
|
||||
</head>
|
||||
<h1>Hello world!</h1>
|
||||
<form:form method="post" modelAttribute="helloWorldForm">
|
||||
<form:checkbox path="selected" />
|
||||
<input type="submit" name="_eventId_submit" value="Submit" />
|
||||
</form:form>
|
||||
</html>
|
||||
</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>
|
||||
<var name="helloWorldForm" class="org.springframework.webflow.samples.helloworld.HelloWorldForm" />
|
||||
</code>
|
||||
</pre>
|
||||
Then update your start view-state to use this variable as its data model, enabling automatic model binding and validation:
|
||||
<pre>
|
||||
<code>
|
||||
<view-state id="start" model="helloWorldForm"> ...
|
||||
</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>
|
||||
<decision-state id="isSelected">
|
||||
<if test="helloWorldForm.selected" then="page2" else="page3" />
|
||||
</decision-state>
|
||||
|
||||
<view-state id="page2">
|
||||
</view-state>
|
||||
|
||||
<view-state id="page3">
|
||||
</view-state>
|
||||
</code>
|
||||
</pre>
|
||||
Be sure to update your start view-state to transition to the isSelected decision state instead of page2 directly:
|
||||
<pre>
|
||||
<code>
|
||||
<view-state id="start">
|
||||
<transition on="submit" to="isSelected" />
|
||||
</view-state>
|
||||
</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>
|
||||
<input type="submit" name="_eventId_finish" value="Finish" />
|
||||
</code>
|
||||
</pre>
|
||||
In your start view-state, declare the finish transition:
|
||||
<pre>
|
||||
<code>
|
||||
<transition on="finish" to="finished" />
|
||||
</code>
|
||||
</pre>
|
||||
And finally define the end-state:
|
||||
<pre>
|
||||
<code>
|
||||
<end-state id="finished" view="externalRedirect:welcome" />
|
||||
</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 ></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>
|
||||
@@ -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 ></a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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>
|
||||
<!-- 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>
|
||||
</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>
|
||||
<!-- Scans within the base package of the application for @Components to configure as beans -->
|
||||
<context:component-scan base-package="org.springframework.webflow.samples.gettingstarted" />
|
||||
</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>
|
||||
<!-- Registers the web flows that can be executed -->
|
||||
<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/">
|
||||
<webflow:flow-location-pattern value="**/*-flow.xml" />
|
||||
</webflow:flow-registry>
|
||||
</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>
|
||||
<!-- Configures the engine that executes web flows in this application -->
|
||||
<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry" />
|
||||
</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>
|
||||
<!-- Maps requests to flows in the flowRegistry -->
|
||||
<bean id="flowMappings" class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
|
||||
<property name="order" value="0" />
|
||||
<property name="flowRegistry" ref="flowRegistry" />
|
||||
</bean>
|
||||
|
||||
<!-- Enables Spring Web Flow as a Spring MVC request handler -->
|
||||
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
|
||||
<property name="flowExecutor" ref="flowExecutor" />
|
||||
</bean>
|
||||
</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>
|
||||
<webflow:flow-builder-services id="flowBuilderServices" development="true" />
|
||||
</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>
|
||||
<!-- 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>
|
||||
</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>
|
||||
<!-- 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>
|
||||
</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 ></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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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");
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
@@ -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,"&").replace(/</gm,"<").replace(/>/gm,">");
|
||||
};
|
||||
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);
|
||||
};
|
||||
})();
|
||||
}
|
||||
@@ -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"]}]};
|
||||
}
|
||||
@@ -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};
|
||||
})();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 |
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,4 +0,0 @@
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ page session="false" %>
|
||||
|
||||
<c:redirect url="/app/welcome" />
|
||||
@@ -1,3 +0,0 @@
|
||||
a img {
|
||||
border: 0;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user