diff --git a/spring-binding/src/main/java/org/springframework/binding/mapping/results/SourceAccessError.java b/spring-binding/src/main/java/org/springframework/binding/mapping/results/SourceAccessError.java
index 9412b833..4ebf5a77 100644
--- a/spring-binding/src/main/java/org/springframework/binding/mapping/results/SourceAccessError.java
+++ b/spring-binding/src/main/java/org/springframework/binding/mapping/results/SourceAccessError.java
@@ -15,9 +15,6 @@
*/
package org.springframework.binding.mapping.results;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
import org.springframework.binding.expression.EvaluationException;
import org.springframework.binding.expression.PropertyNotFoundException;
import org.springframework.binding.mapping.Result;
@@ -68,11 +65,7 @@ public class SourceAccessError extends Result {
}
public String toString() {
- ToStringCreator creator = new ToStringCreator(this).append("errorCode", getErrorCode());
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
- error.printStackTrace(writer);
- creator.append("exceptionStackTrace", stringWriter.toString());
- return creator.toString();
+ return new ToStringCreator(this).append("errorCode", getErrorCode()).append("message", error.getMessage())
+ .toString();
}
}
diff --git a/spring-binding/src/main/java/org/springframework/binding/mapping/results/TargetAccessError.java b/spring-binding/src/main/java/org/springframework/binding/mapping/results/TargetAccessError.java
index e0685950..ca6c23b2 100644
--- a/spring-binding/src/main/java/org/springframework/binding/mapping/results/TargetAccessError.java
+++ b/spring-binding/src/main/java/org/springframework/binding/mapping/results/TargetAccessError.java
@@ -15,9 +15,6 @@
*/
package org.springframework.binding.mapping.results;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
import org.springframework.binding.expression.EvaluationException;
import org.springframework.binding.expression.PropertyNotFoundException;
import org.springframework.binding.mapping.Result;
@@ -72,11 +69,7 @@ public class TargetAccessError extends Result {
}
public String toString() {
- ToStringCreator creator = new ToStringCreator(this).append("errorCode", getErrorCode());
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
- error.printStackTrace(writer);
- creator.append("stackTrace", stringWriter.toString());
- return creator.toString();
+ return new ToStringCreator(this).append("errorCode", getErrorCode()).append("message", error.getMessage())
+ .toString();
}
}
diff --git a/spring-binding/src/main/java/org/springframework/binding/mapping/results/TypeConversionError.java b/spring-binding/src/main/java/org/springframework/binding/mapping/results/TypeConversionError.java
index 32593483..8eaaec6e 100644
--- a/spring-binding/src/main/java/org/springframework/binding/mapping/results/TypeConversionError.java
+++ b/spring-binding/src/main/java/org/springframework/binding/mapping/results/TypeConversionError.java
@@ -15,9 +15,6 @@
*/
package org.springframework.binding.mapping.results;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
import org.springframework.binding.convert.ConversionExecutionException;
import org.springframework.binding.mapping.Result;
import org.springframework.core.style.ToStringCreator;
@@ -76,12 +73,7 @@ public class TypeConversionError extends Result {
}
public String toString() {
- ToStringCreator creator = new ToStringCreator(this).append("originalValue", originalValue).append("targetType",
- targetType);
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
- exception.printStackTrace(writer);
- creator.append("exceptionStackTrace", stringWriter.toString());
- return creator.toString();
+ return new ToStringCreator(this).append("originalValue", originalValue).append("targetType", targetType)
+ .append("message", exception.getMessage()).toString();
}
}
diff --git a/spring-faces/src/main/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParser.java b/spring-faces/src/main/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParser.java
index 45bd6017..7ca9373b 100644
--- a/spring-faces/src/main/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParser.java
+++ b/spring-faces/src/main/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParser.java
@@ -45,15 +45,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
parseConversionService(element, definitionBuilder);
parseExpressionParser(element, definitionBuilder, parseEnableManagedBeans(element, definitionBuilder));
parseViewFactoryCreator(element, definitionBuilder);
- }
-
- private boolean parseEnableManagedBeans(Element element, BeanDefinitionBuilder definitionBuilder) {
- String enableManagedBeans = element.getAttribute("enable-managed-beans");
- if (StringUtils.hasText(enableManagedBeans)) {
- return Boolean.valueOf(enableManagedBeans).booleanValue();
- } else {
- return false;
- }
+ parseDevelopment(element, definitionBuilder);
}
private void parseConversionService(Element element, BeanDefinitionBuilder definitionBuilder) {
@@ -65,15 +57,6 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
}
}
- private void parseViewFactoryCreator(Element element, BeanDefinitionBuilder definitionBuilder) {
- String viewFactoryCreator = element.getAttribute("view-factory-creator");
- if (StringUtils.hasText(viewFactoryCreator)) {
- definitionBuilder.addPropertyReference("viewFactoryCreator", viewFactoryCreator);
- } else {
- definitionBuilder.addPropertyValue("viewFactoryCreator", new JsfViewFactoryCreator());
- }
- }
-
private void parseExpressionParser(Element element, BeanDefinitionBuilder definitionBuilder,
boolean enableManagedBeans) {
if (enableManagedBeans) {
@@ -122,4 +105,29 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
return definitionBuilder.getBeanDefinition().getPropertyValues().getPropertyValue("conversionService")
.getValue();
}
+
+ private boolean parseEnableManagedBeans(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String enableManagedBeans = element.getAttribute("enable-managed-beans");
+ if (StringUtils.hasText(enableManagedBeans)) {
+ return Boolean.valueOf(enableManagedBeans).booleanValue();
+ } else {
+ return false;
+ }
+ }
+
+ private void parseViewFactoryCreator(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String viewFactoryCreator = element.getAttribute("view-factory-creator");
+ if (StringUtils.hasText(viewFactoryCreator)) {
+ definitionBuilder.addPropertyReference("viewFactoryCreator", viewFactoryCreator);
+ } else {
+ definitionBuilder.addPropertyValue("viewFactoryCreator", new JsfViewFactoryCreator());
+ }
+ }
+
+ private void parseDevelopment(Element element, BeanDefinitionBuilder definitionBuilder) {
+ String development = element.getAttribute("development");
+ if (StringUtils.hasText(development)) {
+ definitionBuilder.addPropertyValue("development", development);
+ }
+ }
}
\ No newline at end of file
diff --git a/spring-faces/src/main/java/org/springframework/faces/config/spring-faces-2.0.xsd b/spring-faces/src/main/java/org/springframework/faces/config/spring-faces-2.0.xsd
index 8afedf2f..445d1b06 100644
--- a/spring-faces/src/main/java/org/springframework/faces/config/spring-faces-2.0.xsd
+++ b/spring-faces/src/main/java/org/springframework/faces/config/spring-faces-2.0.xsd
@@ -55,6 +55,16 @@ The custom ViewFactoryCreator implementation to use produce ViewFactories capabl
+
+
+
+
+
+
+
diff --git a/spring-faces/src/test/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParserTests.java b/spring-faces/src/test/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParserTests.java
index ae5d036b..056ec868 100644
--- a/spring-faces/src/test/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParserTests.java
+++ b/spring-faces/src/test/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParserTests.java
@@ -43,6 +43,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser);
assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator);
assertTrue(builderServices.getConversionService() instanceof FacesConversionService);
+ assertFalse(builderServices.getDevelopment());
}
public void testEnableManagedBeans() {
@@ -51,6 +52,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
assertTrue(builderServices.getExpressionParser() instanceof JsfManagedBeanAwareELExpressionParser);
assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator);
assertTrue(builderServices.getConversionService() instanceof FacesConversionService);
+ assertFalse(builderServices.getDevelopment());
}
public void testFlowBuilderServicesAllCustomized() {
@@ -59,6 +61,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser);
assertTrue(builderServices.getViewFactoryCreator() instanceof TestViewFactoryCreator);
assertTrue(builderServices.getConversionService() instanceof TestConversionService);
+ assertTrue(builderServices.getDevelopment());
}
public void testFlowBuilderServicesConversionServiceCustomized() {
@@ -68,6 +71,7 @@ public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase
assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser);
assertTrue(((WebFlowELExpressionParser) builderServices.getExpressionParser()).getConversionService() instanceof TestConversionService);
assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator);
+ assertFalse(builderServices.getDevelopment());
}
public static class TestViewFactoryCreator implements ViewFactoryCreator {
diff --git a/spring-faces/src/test/java/org/springframework/faces/config/flow-builder-services.xml b/spring-faces/src/test/java/org/springframework/faces/config/flow-builder-services.xml
index a741449c..53c22281 100644
--- a/spring-faces/src/test/java/org/springframework/faces/config/flow-builder-services.xml
+++ b/spring-faces/src/test/java/org/springframework/faces/config/flow-builder-services.xml
@@ -15,7 +15,7 @@
+ conversion-service="customConversionService" development="true" />
diff --git a/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webflow-config.xml b/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webflow-config.xml
index 855fdbd9..a3bc5518 100644
--- a/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webflow-config.xml
+++ b/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webflow-config.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java b/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java
index 0ad8686a..308c6150 100644
--- a/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java
+++ b/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.java
@@ -5,7 +5,7 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@@ -21,29 +21,27 @@ public class HotelsController {
}
@RequestMapping(method = RequestMethod.GET)
- public List index(SearchCriteria searchCriteria, Principal currentUser) {
+ public void index(SearchCriteria searchCriteria, Principal currentUser, Model model) {
if (currentUser != null) {
- return bookingService.findBookings(currentUser.getName());
- } else {
- return null;
+ List booking = bookingService.findBookings(currentUser.getName());
+ model.addAttribute(booking);
}
}
@RequestMapping(method = RequestMethod.GET)
- public @ModelAttribute("hotels")
- List search(SearchCriteria criteria) {
- return bookingService.findHotels(criteria);
+ public String search(SearchCriteria criteria, Model model) {
+ List hotels = bookingService.findHotels(criteria);
+ model.addAttribute(hotels);
+ return "hotels/search";
}
@RequestMapping(method = RequestMethod.GET)
- public Hotel show(@RequestParam("id")
- Long id) {
+ public Hotel show(@RequestParam("id") Long id) {
return bookingService.findHotelById(id);
}
@RequestMapping(method = RequestMethod.GET)
- public String deleteBooking(@RequestParam("id")
- Long id) {
+ public String deleteBooking(@RequestParam("id") Long id) {
bookingService.cancelBooking(id);
return "redirect:index";
}
diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webflow-config.xml b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webflow-config.xml
index 055c9d51..e9b9d441 100644
--- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webflow-config.xml
+++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webflow-config.xml
@@ -18,11 +18,11 @@
-
+
-
+
-
+
diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webmvc-config.xml b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webmvc-config.xml
index 12a6c5d0..6a8ca888 100644
--- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webmvc-config.xml
+++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webmvc-config.xml
@@ -4,58 +4,45 @@
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
-
-
-
-
- /hotels/booking=bookingFlowHandler
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /WEB-INF/layouts/layouts.xml
- /WEB-INF/views.xml
- /WEB-INF/hotels/views.xml
- /WEB-INF/hotels/booking/views.xml
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+ /WEB-INF/layouts/layouts.xml
+ /WEB-INF/views.xml
+ /WEB-INF/hotels/views.xml
+ /WEB-INF/hotels/booking/views.xml
+
+
+
+
+
-
+
-
+
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 439e0c07..52518982 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
@@ -35,7 +35,7 @@
-
+
diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.properties b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.properties
index f91d121f..dfb02c26 100644
--- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.properties
+++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.properties
@@ -1,5 +1,12 @@
-booking.checkinDate.typeMismatch=The Check In Date must be in the format dd/mm/yy
-booking.checkinDate.beforeToday=The Check In Date must be a future date
+booking.checkinDate.required=The check in date is required
+booking.checkinDate.typeMismatch=The check in date must be in the format dd/mm/yy
+booking.checkinDate.beforeToday=The check in date must be a future date
-booking.checkoutDate.typeMismatch=The Check Out Date must be in the format dd/mm/yy
-booking.checkoutDate.beforeCheckinDate=The Check Out Date must be later than the Check In Date
+booking.checkoutDate.required=The check out date is required
+booking.checkoutDate.typeMismatch=The check out date must be in the format dd/mm/yy
+booking.checkoutDate.beforeCheckinDate=The check out date must be later than the check in date
+
+booking.creditCard.required=The credit card must be a valid 16 digit number
+booking.creditCardName.required=The name on the credit card is required
+
+required=The {0} field is required
diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/search.jsp b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/search.jsp
index 93c0571b..f9ce1b4e 100644
--- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/search.jsp
+++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/search.jsp
@@ -17,7 +17,7 @@
-
+
@@ -29,7 +29,7 @@
-
+
| ${hotel.name} |
${hotel.address} |
@@ -38,7 +38,7 @@
View Hotel |
-
+
| No hotels found |
@@ -56,7 +56,7 @@
}));
-
+
More Results