Repository: wicket Updated Branches: refs/heads/master 26adc3133 -> a7af2ad59 refs/heads/wicket-6.x 548e1c090 -> c2bf22c1f refs/heads/wicket-7.x ebc97e31d -> 843cfdaf8 refs/heads/wicket-8.x b5f5001de -> 4ad94835e
WICKET-6553 SelectionOptions escape markup Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4ad94835 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4ad94835 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4ad94835 Branch: refs/heads/wicket-8.x Commit: 4ad94835e74be3eccb52d37201f2a5631e002ca2 Parents: b5f5001 Author: Sven Meier <[email protected]> Authored: Fri May 25 22:21:15 2018 +0200 Committer: Sven Meier <[email protected]> Committed: Fri May 25 22:21:19 2018 +0200 ---------------------------------------------------------------------- .../markup/html/form/select/SelectOptions.java | 12 +++- .../markup/html/form/select/SelectTest.java | 16 +++++ .../html/form/select/SelectTestPage3.html | 12 ++++ .../html/form/select/SelectTestPage3.java | 62 ++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/4ad94835/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java index fdf22c1..fd6d1f6 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java @@ -25,6 +25,7 @@ import org.apache.wicket.markup.parser.XmlTag.TagType; import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.util.CollectionModel; +import org.apache.wicket.util.string.Strings; /** @@ -139,7 +140,9 @@ public class SelectOptions<T> extends RepeatingView */ protected SelectOption<T> newOption(final String text, final IModel<T> model) { - return new SimpleSelectOption<>("option", model, text); + SimpleSelectOption<T> option = new SimpleSelectOption<>("option", model, text); + option.setEscapeModelStrings(this.getEscapeModelStrings()); + return option; } /** @@ -169,7 +172,12 @@ public class SelectOptions<T> extends RepeatingView @Override public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) { - replaceComponentTagBody(markupStream, openTag, text); + CharSequence escaped = text; + if (getEscapeModelStrings()) { + escaped = Strings.escapeMarkup(text); + } + + replaceComponentTagBody(markupStream, openTag, escaped); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/4ad94835/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTest.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTest.java b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTest.java index d6a80230..640efb3 100644 --- a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTest.java +++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTest.java @@ -72,4 +72,20 @@ public class SelectTest extends WicketTestCase assertTrue(page.select.isSelected(page.option0)); } + + /** + * WICKET-6553 option text + */ + @Test + public void optionText() + { + + SelectTestPage3 page = new SelectTestPage3(); + + tester.startPage(page); + + assertTrue(tester.getLastResponseAsString().contains("<1>")); + assertTrue(tester.getLastResponseAsString().contains("<2>")); + assertTrue(tester.getLastResponseAsString().contains("<3>")); + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/4ad94835/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.html ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.html b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.html new file mode 100644 index 0000000..068bba2 --- /dev/null +++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.html @@ -0,0 +1,12 @@ +<html> +<head><title>SelectTestPage</title></head> +<body> + <form wicket:id="form"> + <select wicket:id="select"> + <div wicket:id="options"> + <option wicket:id="option"></option> + </div> + </select> + </form> +</body> +</html> http://git-wip-us.apache.org/repos/asf/wicket/blob/4ad94835/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.java b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.java new file mode 100644 index 0000000..e6a3daf --- /dev/null +++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/select/SelectTestPage3.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.extensions.markup.html.form.select; + +import java.util.Arrays; +import java.util.List; + +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.util.ListModel; + +/** + */ +public class SelectTestPage3 extends WebPage +{ + + public Form<Void> form; + public Select<Integer> select; + public SelectOptions<Integer> options; + + public SelectTestPage3() + { + form = new Form<>("form"); + add(form); + + select = new Select<Integer>("select", new Model<Integer>(1)); + form.add(select); + + List<Integer> choices = Arrays.asList(1, 2, 3); + + IOptionRenderer<Integer> renderer = new IOptionRenderer<Integer>() { + + @Override + public IModel<Integer> getModel(Integer value) { + return Model.of(value); + } + + @Override + public String getDisplayValue(Integer object) { + return "<" + object + ">"; + } + }; + + select.add(options = new SelectOptions<Integer>("options", new ListModel<>(choices), renderer )); + } +} \ No newline at end of file
