diff --git a/pom.xml b/pom.xml index b6af19942d6..9c5e0f5e5aa 100644 --- a/pom.xml +++ b/pom.xml @@ -821,7 +821,7 @@ ${project.groupId} ${project.artifactId} - 10.0.0 + 11.0.0-SNAPSHOT jar diff --git a/wicket-core-tests/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html b/wicket-core-tests/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html index fcf45b76b22..e4db31ea629 100644 --- a/wicket-core-tests/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html +++ b/wicket-core-tests/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html @@ -21,9 +21,9 @@
- - - + + +
\ No newline at end of file diff --git a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java index daf5b26b181..381fd8b743d 100644 --- a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java +++ b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextAreaTest.java @@ -45,7 +45,6 @@ void requiredAttribute() testPage.textArea.setOutputMarkupId(true); testPage.textArea.setType(String.class); testPage.textArea.setRequired(true); - testPage.textArea.add(new HTML5Attributes()); tester.startPage(testPage); TagTester tagTester = tester.getTagById(testPage.textArea.getMarkupId()); diff --git a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java index 54c3bf49bad..fb257eae6fd 100644 --- a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java +++ b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/TextFieldTest.java @@ -94,7 +94,6 @@ void requiredAttribute() testPage.textField.setOutputMarkupId(true); testPage.textField.setType(String.class); testPage.textField.setRequired(true); - testPage.textField.add(new HTML5Attributes()); tester.startPage(testPage); TagTester tagTester = tester.getTagById(testPage.textField.getMarkupId()); diff --git a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html index a87014e30b7..3720db5f5a2 100644 --- a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html +++ b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/validation/HomePage1_ExpectedResult.html @@ -11,7 +11,7 @@
- +
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java index 5d726861540..53c8f8d94ba 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/HTML5Attributes.java @@ -16,6 +16,8 @@ */ package org.apache.wicket.markup.html; +import java.text.Normalizer.Form; + import org.apache.wicket.Component; import org.apache.wicket.application.IComponentInstantiationListener; import org.apache.wicket.behavior.Behavior; @@ -33,7 +35,10 @@ * * @see #onInput(AbstractTextComponent, ComponentTag) * @see #onButton(Button, ComponentTag) + * @deprecated HTML 5 attributes are now automatically applied + * in {@link FormComponent#onComponentTagBody(MarkupStream, ComponentTag)} */ +@Deprecated(forRemoval = true) public class HTML5Attributes extends Behavior { private static final long serialVersionUID = 1L; @@ -50,6 +55,15 @@ else if (component instanceof Button) onButton((Button)component, tag); } } + + /** + * This behavior is disabled by default as it's deprecated and marked for removal + */ + @Override + public boolean isEnabled(Component component) + { + return false; + } /** * Writes HTML5 attributes for {@link AbstractTextComponent} inputs: diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java index cf358efcb46..b449e770910 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java @@ -236,6 +236,15 @@ public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) super.onComponentTagBody(markupStream, openTag); } + + @Override + protected void onFormComponentTag(ComponentTag tag) + { + if (!getDefaultFormProcessing()) + { + tag.put("formnovalidate", "formnovalidate"); + } + } @Override public void onError() diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java index 28331766df4..55ca26b6041 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java @@ -67,6 +67,7 @@ import org.apache.wicket.validation.IValidator; import org.apache.wicket.validation.ValidationError; import org.apache.wicket.validation.ValidatorAdapter; +import org.apache.wicket.validation.validator.PatternValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1409,9 +1410,45 @@ protected void onComponentTag(final ComponentTag tag) onDisabled(tag); } + onFormComponentTag(tag); + super.onComponentTag(tag); } + /** + * FormComponent specific tag processing. + * + * @param tag + * Tag to modify + * @see org.apache.wicket.Component#onComponentTag(ComponentTag) + */ + protected void onFormComponentTag(final ComponentTag tag) + { + if (isRequired()) + { + onRequired(tag); + } + + IModel label = getLabel(); + if (label != null && label.getObject() != null) + { + tag.put("placeholder", label.getObject()); + } + + for (IValidator validator : getValidators()) + { + while (validator instanceof ValidatorAdapter) + { + validator = ((ValidatorAdapter)validator).getValidator(); + } + + if (validator instanceof PatternValidator) + { + tag.put("pattern", ((PatternValidator)validator).getPattern().toString()); + } + } + } + /** * Sets the temporary converted input value to null. * @@ -1424,6 +1461,19 @@ protected void onDetach() convertedInput = null; } + /** + * Called by {@link #onComponentTag(ComponentTag)} when the component is required. By default, + * this method will add a required="required" attribute to the tag. Components may override this + * method to tweak the tag as they think is fit. + * + * @param tag + * the tag that is being rendered + */ + protected void onRequired(final ComponentTag tag) + { + tag.put("required", "required"); + } + /** * Called by {@link #onComponentTag(ComponentTag)} when the component is disabled. By default, * this method will add a disabled="disabled" attribute to the tag. Components may override this