Updated Branches: refs/heads/master 4f9aa2d95 -> 60d3009e9
WICKET-5467 NumberTextField should support "any" as valid step attribute value (cherry picked from commit 2c3aa01aba8666f8dc358e5ae25f36e38523924d) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/60d3009e Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/60d3009e Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/60d3009e Branch: refs/heads/master Commit: 60d3009e9f3dc65d3d7cfeb401aaae3e617ef4a0 Parents: 4f9aa2d Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Wed Jan 15 12:13:27 2014 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Wed Jan 15 12:14:04 2014 +0200 ---------------------------------------------------------------------- .../markup/html/form/NumberTextField.java | 16 ++++++++- .../markup/html/form/NumberTextFieldTest.java | 34 +++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/60d3009e/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java index 925ad21..ca1a2fc 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java @@ -42,6 +42,13 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField { private static final long serialVersionUID = 1L; + /** + * Use this as a marker of step attribute value "any" + * Because the w3c spec requires step to be a non-negative digit + * greater than zero we use zero as delegate for "any" keyword. + */ + public static final Double ANY = Double.valueOf(0d); + private RangeValidator<N> validator; private N minimum; @@ -187,7 +194,14 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField if (step != null) { - attributes.put("step", Objects.stringValue(step)); + if (step.doubleValue() == ANY) + { + attributes.put("step", "any"); + } + else + { + attributes.put("step", Objects.stringValue(step)); + } } else { http://git-wip-us.apache.org/repos/asf/wicket/blob/60d3009e/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java index 44c0fa8..bb951d5 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java @@ -104,6 +104,38 @@ public class NumberTextFieldTest extends WicketTestCase } /** + * WICKET-5467 + */ + @Test + public void respectStepAny() + { + TestPage<Double> testPage = new TestPage<Double>(); + testPage.textField.setType(Double.class); + testPage.textField.setStep(NumberTextField.ANY); + testPage.textField.setModelObject(new Double("1000.0")); + tester.startPage(testPage); + + String response = tester.getLastResponseAsString(); + assertTrue(response.contains("<input wicket:id=\"number\" step=\"any\" type=\"number\" value=\"1000.0\" name=\"number\"/>")); + } + + /** + * WICKET-5467 + */ + @Test + public void respectStepWithNumberValue() + { + TestPage<Double> testPage = new TestPage<Double>(); + testPage.textField.setType(Double.class); + testPage.textField.setStep(Double.valueOf(0.3d)); + testPage.textField.setModelObject(new Double("1000.0")); + tester.startPage(testPage); + + String response = tester.getLastResponseAsString(); + assertTrue(response.contains("<input wicket:id=\"number\" step=\"0.3\" type=\"number\" value=\"1000.0\" name=\"number\"/>")); + } + + /** * @param <N> * type parameter */ @@ -138,7 +170,7 @@ public class NumberTextFieldTest extends WicketTestCase { return new StringResourceStream( "<html><body>" - + "<form wicket:id=\"form\"><input wicket:id=\"number\" type=\"number\" /></form></body></html>"); + + "<form wicket:id=\"form\"><input wicket:id=\"number\" step=\"any\" type=\"number\" /></form></body></html>"); } } }