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/c2bf22c1 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c2bf22c1 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c2bf22c1 Branch: refs/heads/wicket-6.x Commit: c2bf22c1f98029dcdb5287466061dc9e74c65f89 Parents: 548e1c0 Author: Sven Meier <[email protected]> Authored: Fri May 25 22:21:15 2018 +0200 Committer: Sven Meier <[email protected]> Committed: Fri May 25 22:40:33 2018 +0200 ---------------------------------------------------------------------- .../markup/html/form/select/SelectOptions.java | 14 ++++- .../markup/html/form/select/SelectTest.java | 16 +++++ .../html/form/select/SelectTestPage3.html | 12 ++++ .../html/form/select/SelectTestPage3.java | 62 ++++++++++++++++++++ 4 files changed, 101 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/c2bf22c1/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 2fe75c7..67b3bdb 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,7 +25,8 @@ 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.WildcardCollectionModel; - +import org.apache.wicket.model.util.CollectionModel; +import org.apache.wicket.util.string.Strings; /** * Component that makes it easy to produce a list of SelectOption components @@ -138,7 +139,9 @@ public class SelectOptions<T> extends RepeatingView */ protected SelectOption<T> newOption(final String text, final IModel<? extends T> model) { - return new SimpleSelectOption<T>("option", model, text); + SimpleSelectOption<T> option = new SimpleSelectOption<T>("option", model, text); + option.setEscapeModelStrings(this.getEscapeModelStrings()); + return option; } /** @@ -168,7 +171,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/c2bf22c1/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 ff4cff0..64df22a 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/c2bf22c1/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/c2bf22c1/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..bb04f65 --- /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<Void>("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<Integer>(choices), renderer )); + } +}
