From 809b1d2c4f2a53ed3ffb36214ce23e5d004833a5 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 5 Aug 2009 12:16:11 +0000 Subject: [PATCH] SPR-4700 - Add single checkbox input macro for Velocity and Freemarker git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1689 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../web/servlet/view/freemarker/spring.ftl | 17 +++++++++++++++++ .../web/servlet/view/velocity/spring.vm | 15 +++++++++++++++ .../view/freemarker/FreeMarkerMacroTests.java | 5 +++++ .../web/servlet/view/freemarker/test.ftl | 6 ++++++ .../view/velocity/VelocityMacroTests.java | 5 +++++ .../web/servlet/view/velocity/test.vm | 7 +++++++ 6 files changed, 55 insertions(+) diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/freemarker/spring.ftl b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/freemarker/spring.ftl index c69850a6b24..e0f4501b356 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/freemarker/spring.ftl +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/freemarker/spring.ftl @@ -296,6 +296,23 @@ +<#-- + * formCheckbox + * + * Show a single checkbox. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +--> +<#macro formCheckbox path attributes=""> + <@bind path /> + <#local checked><#if status.value?? && status.value?string=="true">true<#else>false + <#local id><#if status.expression??>${status.expression}<#else>${path} + + + + <#-- * showErrors * diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/velocity/spring.vm b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/velocity/spring.vm index 4b90fc60c6d..a8d0a1305a1 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/velocity/spring.vm +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/velocity/spring.vm @@ -269,6 +269,21 @@ #end +#** + * springFormCheckbox + * + * Show a single checkbox. + * + * @param path the name of the field to bind to + * @param attributes any additional attributes for the element (such as class + * or CSS styles or size +*# +#macro( springFormCheckbox $path $attributes ) + #springBind($path) + + +#end + #** * springShowErrors * diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/FreeMarkerMacroTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/FreeMarkerMacroTests.java index 65adaec3ed9..5d162cdb2cc 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/FreeMarkerMacroTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/FreeMarkerMacroTests.java @@ -140,6 +140,7 @@ public class FreeMarkerMacroTests extends TestCase { TestBean tb = new TestBean("Darren", 99); tb.setSpouse(new TestBean("Fred")); + tb.setJedi(true); request.setAttribute("command", tb); HashMap names = new HashMap(); @@ -192,6 +193,10 @@ public class FreeMarkerMacroTests extends TestCase { if (tokens[i].equals("FORM11")) assertEquals("", tokens[i + 1]); if (tokens[i].equals("FORM12")) assertEquals("", tokens[i + 1]); if (tokens[i].equals("FORM13")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM15")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM15")) assertEquals("", tokens[i + 2]); + if (tokens[i].equals("FORM16")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM16")) assertEquals("", tokens[i + 2]); } } diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/test.ftl b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/test.ftl index 33def4869b6..7394b65423a 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/test.ftl +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/freemarker/test.ftl @@ -77,3 +77,9 @@ FORM13 FORM14 <@spring.formSingleSelect "command.name", options, ""/> + +FORM15 +<@spring.formCheckbox "command.name"/> + +FORM16 +<@spring.formCheckbox "command.jedi"/> diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/VelocityMacroTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/VelocityMacroTests.java index bbbe61adf4b..e8406f4c79b 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/VelocityMacroTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/VelocityMacroTests.java @@ -133,6 +133,7 @@ public class VelocityMacroTests extends TestCase { rc.setContextPath("/springtest"); TestBean tb = new TestBean("Darren", 99); + tb.setJedi(true); request.setAttribute("command", tb); HashMap names = new HashMap(); @@ -178,6 +179,10 @@ public class VelocityMacroTests extends TestCase { //TODO verify remaining output (fix whitespace) if (tokens[i].equals("FORM9")) assertEquals("", tokens[i + 1]); if (tokens[i].equals("FORM10")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM15")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM15")) assertEquals("", tokens[i + 2]); + if (tokens[i].equals("FORM16")) assertEquals("", tokens[i + 1]); + if (tokens[i].equals("FORM16")) assertEquals("", tokens[i + 2]); } } diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/test.vm b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/test.vm index d2ce995661e..401b74134a9 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/test.vm +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/velocity/test.vm @@ -53,5 +53,12 @@ FORM9 FORM10 #springFormHiddenInput("command.name" "") +FORM15 +#springFormCheckbox("command.name" "") + +FORM16 +#springFormCheckbox("command.jedi" "") + + ERRORS #springShowErrors(" " "")