diff --git a/spring-binding/ivy.xml b/spring-binding/ivy.xml
index 7054b1b4..681f55c4 100644
--- a/spring-binding/ivy.xml
+++ b/spring-binding/ivy.xml
@@ -23,9 +23,9 @@
-
-
-
+
+
+
diff --git a/spring-faces/ivy.xml b/spring-faces/ivy.xml
index a17092a8..840319a3 100644
--- a/spring-faces/ivy.xml
+++ b/spring-faces/ivy.xml
@@ -27,11 +27,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -50,7 +50,7 @@
-
+
diff --git a/spring-js/ivy.xml b/spring-js/ivy.xml
index f23229f3..02fcb135 100644
--- a/spring-js/ivy.xml
+++ b/spring-js/ivy.xml
@@ -25,17 +25,17 @@
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/spring-webflow-samples/booking-faces/ivy.xml b/spring-webflow-samples/booking-faces/ivy.xml
index bf85d443..f66bdea7 100755
--- a/spring-webflow-samples/booking-faces/ivy.xml
+++ b/spring-webflow-samples/booking-faces/ivy.xml
@@ -33,15 +33,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -50,7 +50,7 @@
-
+
diff --git a/spring-webflow-samples/booking-mvc/ivy.xml b/spring-webflow-samples/booking-mvc/ivy.xml
index 5bf67b61..0523495e 100755
--- a/spring-webflow-samples/booking-mvc/ivy.xml
+++ b/spring-webflow-samples/booking-mvc/ivy.xml
@@ -36,16 +36,16 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -54,7 +54,7 @@
-
+
diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml
index a3f27007..ec70efee 100644
--- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml
+++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml
@@ -14,6 +14,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/spring-webflow/ivy.xml b/spring-webflow/ivy.xml
index d6d8cbbe..924903c3 100644
--- a/spring-webflow/ivy.xml
+++ b/spring-webflow/ivy.xml
@@ -30,14 +30,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -51,9 +51,9 @@
-
-
-
+
+
+
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java
new file mode 100644
index 00000000..ba2a0295
--- /dev/null
+++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2004-2008 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.webflow.engine.model;
+
+import java.util.LinkedList;
+
+/**
+ * Model support for the view-state binder element.
+ * @author Scott Andrews
+ */
+public class BinderModel extends AbstractModel {
+
+ private String autoBind;
+
+ private LinkedList bindings;
+
+ public String getAutoBind() {
+ return autoBind;
+ }
+
+ public void setAutoBind(String autoBind) {
+ this.autoBind = autoBind;
+ }
+
+ public LinkedList getBindings() {
+ return bindings;
+ }
+
+ public void setBindings(LinkedList bindings) {
+ this.bindings = bindings;
+ }
+
+ public boolean isMergeableWith(Model model) {
+ return model instanceof BinderModel;
+ }
+
+ public void merge(Model model) {
+ BinderModel binder = (BinderModel) model;
+ setAutoBind(merge(getAutoBind(), binder.getAutoBind()));
+ setBindings(merge(getBindings(), binder.getBindings()));
+ }
+}
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java
index aa01a499..938a1ec2 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java
+++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java
@@ -37,7 +37,7 @@ public class ViewStateModel extends AbstractTransitionableStateModel {
private LinkedList vars;
- private LinkedList bindings;
+ private BinderModel binder;
private LinkedList onRenderActions;
@@ -71,7 +71,7 @@ public class ViewStateModel extends AbstractTransitionableStateModel {
setPopup(merge(getPopup(), state.getPopup()));
setModel(merge(getModel(), state.getModel()));
setVars(merge(getVars(), state.getVars(), false));
- setBindings(merge(getBindings(), state.getBindings(), false));
+ setBinder((BinderModel) merge(getBinder(), state.getBinder()));
setOnRenderActions(merge(getOnRenderActions(), state.getOnRenderActions(), false));
}
@@ -174,31 +174,12 @@ public class ViewStateModel extends AbstractTransitionableStateModel {
vars.add(var);
}
- /**
- * @return the bindings
- */
- public LinkedList getBindings() {
- return bindings;
+ public BinderModel getBinder() {
+ return binder;
}
- /**
- * @param bindings the bindings to set
- */
- public void setBindings(LinkedList bindings) {
- this.bindings = bindings;
- }
-
- /**
- * @param var the var to add
- */
- public void addBinding(BindingModel binding) {
- if (binding == null) {
- return;
- }
- if (bindings == null) {
- bindings = new LinkedList();
- }
- bindings.add(binding);
+ public void setBinder(BinderModel binder) {
+ this.binder = binder;
}
/**
@@ -214,4 +195,5 @@ public class ViewStateModel extends AbstractTransitionableStateModel {
public void setOnRenderActions(LinkedList onRenderActions) {
this.onRenderActions = onRenderActions;
}
+
}
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java
index a8ca1d84..cbfeece7 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java
+++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java
@@ -33,6 +33,7 @@ import org.springframework.webflow.engine.model.AbstractStateModel;
import org.springframework.webflow.engine.model.ActionStateModel;
import org.springframework.webflow.engine.model.AttributeModel;
import org.springframework.webflow.engine.model.BeanImportModel;
+import org.springframework.webflow.engine.model.BinderModel;
import org.springframework.webflow.engine.model.BindingModel;
import org.springframework.webflow.engine.model.DecisionStateModel;
import org.springframework.webflow.engine.model.EndStateModel;
@@ -518,6 +519,18 @@ public class XmlFlowModelBuilder implements FlowModelBuilder {
}
}
+ private BinderModel parseBinder(Element element) {
+ Element binderElement = DomUtils.getChildElementByTagName(element, "binder");
+ if (binderElement != null) {
+ BinderModel binder = new BinderModel();
+ binder.setAutoBind(binderElement.getAttribute("auto-bind"));
+ binder.setBindings(parseBindings(binderElement));
+ return binder;
+ } else {
+ return null;
+ }
+ }
+
private LinkedList parseBindings(Element element) {
List bindingElements = DomUtils.getChildElementsByTagName(element, "binding");
if (bindingElements.isEmpty()) {
@@ -594,7 +607,7 @@ public class XmlFlowModelBuilder implements FlowModelBuilder {
state.setPopup(element.getAttribute("popup"));
state.setModel(element.getAttribute("model"));
state.setVars(parseVars(element));
- state.setBindings(parseBindings(element));
+ state.setBinder(parseBinder(element));
state.setOnRenderActions(parseOnRenderActions(element));
state.setAttributes(parseAttributes(element));
state.setSecured(parseSecured(element));
diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd
index b0f3cb1b..1d9759a9 100644
--- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd
+++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd
@@ -327,33 +327,68 @@ fully-qualified class name (e.g. 'java.lang.Integer'). The class must be a conc
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java
index eba77416..35defacf 100644
--- a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java
+++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java
@@ -152,8 +152,9 @@ public class XmlFlowModelBuilderTests extends TestCase {
FlowModel flow = builder.getFlowModel();
ViewStateModel model = (ViewStateModel) flow.getStates().get(0);
assertEquals("formObject", model.getModel());
- assertEquals("objectProperty", ((BindingModel) model.getBindings().get(0)).getProperty());
- assertEquals("customConverter", ((BindingModel) model.getBindings().get(0)).getConverter());
+ assertEquals("true", model.getBinder().getAutoBind());
+ assertEquals("objectProperty", ((BindingModel) model.getBinder().getBindings().get(0)).getProperty());
+ assertEquals("customConverter", ((BindingModel) model.getBinder().getBindings().get(0)).getConverter());
}
public void testViewStateRedirect() {
diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml
index ff717e66..aada0e0f 100644
--- a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml
+++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml
@@ -3,7 +3,9 @@
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
-
+
+
+
\ No newline at end of file