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 @@ - + @@ -38,7 +38,7 @@ - + @@ -56,7 +56,7 @@ })); - + More Results
${hotel.name} ${hotel.address}View Hotel
No hotels found