From 123a0906ce455c8ea7dc6a7580159a614c0b46bb Mon Sep 17 00:00:00 2001 From: Aleksandr Mashchenko Date: Tue, 4 Dec 2018 23:02:31 +0200 Subject: [PATCH] Add listTitle to optgroup tag --- .../java/org/apache/struts2/components/OptGroup.java | 5 +++++ .../org/apache/struts2/views/jsp/ui/OptGroupTag.java | 6 ++++++ core/src/main/resources/template/simple/optgroup.ftl | 9 +++++++++ core/src/site/resources/tags/optgroup.html | 8 ++++++++ .../apache/struts2/views/jsp/ui/OptGroupTest.java | 2 ++ .../org/apache/struts2/views/jsp/ui/OptGroup-8.txt | 12 ++++++------ 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/components/OptGroup.java b/core/src/main/java/org/apache/struts2/components/OptGroup.java index 03c6a395c..5f2e2ace2 100644 --- a/core/src/main/java/org/apache/struts2/components/OptGroup.java +++ b/core/src/main/java/org/apache/struts2/components/OptGroup.java @@ -150,4 +150,9 @@ public class OptGroup extends Component { public void setListCssStyle(String listCssStyle) { internalUiBean.setListCssStyle(listCssStyle); } + + @StrutsTagAttribute(description = "Property of list objects to get title from") + public void setListTitle(String listTitle) { + internalUiBean.setListTitle(listTitle); + } } diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/OptGroupTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/OptGroupTag.java index 870c754bc..bd90ff5a3 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/OptGroupTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/OptGroupTag.java @@ -38,6 +38,7 @@ public class OptGroupTag extends ComponentTagSupport { protected String listValue; protected String listCssClass; protected String listCssStyle; + protected String listTitle; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new OptGroup(stack, req, res); @@ -54,6 +55,7 @@ public class OptGroupTag extends ComponentTagSupport { optGroup.setListValue(listValue); optGroup.setListCssClass(listCssClass); optGroup.setListCssStyle(listCssStyle); + optGroup.setListTitle(listTitle); } public void setList(String list) { @@ -83,4 +85,8 @@ public class OptGroupTag extends ComponentTagSupport { public void setListCssStyle(String listCssStyle) { this.listCssStyle = listCssStyle; } + + public void setListTitle(String listTitle) { + this.listTitle = listTitle; + } } diff --git a/core/src/main/resources/template/simple/optgroup.ftl b/core/src/main/resources/template/simple/optgroup.ftl index 0f04f2130..a424fe776 100644 --- a/core/src/main/resources/template/simple/optgroup.ftl +++ b/core/src/main/resources/template/simple/optgroup.ftl @@ -47,6 +47,12 @@ <#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)/> + <#assign optGroupItemTitle = ''/> + <#if optGroupInternalListUiBean.parameters.listTitle??> + <#if stack.findString(optGroupInternalListUiBean.parameters.listTitle)??> + <#assign optGroupItemTitle= stack.findString(optGroupInternalListUiBean.parameters.listTitle)/> + + <#lt> <#assign trash=stack.pop() /> diff --git a/core/src/site/resources/tags/optgroup.html b/core/src/site/resources/tags/optgroup.html index 111fdae28..5a57e954d 100644 --- a/core/src/site/resources/tags/optgroup.html +++ b/core/src/site/resources/tags/optgroup.html @@ -81,6 +81,14 @@ Please do not edit it directly. String Set the listKey attribute. + + listTitle + false + + false + String + Property of list objects to get title from + listValue false diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java index 4505c5bbe..07da6f698 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java @@ -260,12 +260,14 @@ public class OptGroupTest extends AbstractUITagTest { selectTag.setList("%{#{'ONE':'one','TWO':'two','THREE':'three'}}"); selectTag.setListCssClass("'option-css-class'"); selectTag.setListCssStyle("'background-color: green;'"); + selectTag.setListTitle("'option-title'"); OptGroupTag optGroupTag1 = new OptGroupTag(); optGroupTag1.setLabel("My Label 1"); optGroupTag1.setList("%{#{'AAA':'aaa','BBB':'bbb','CCC':'ccc'}}"); optGroupTag1.setListCssClass("'optgroup-option-css-class'"); optGroupTag1.setListCssStyle("'background-color: blue;'"); + optGroupTag1.setListTitle("'optgroup-option-title'"); OptGroupTag optGroupTag2 = new OptGroupTag(); optGroupTag2.setLabel("My Label 2"); diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-8.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-8.txt index 52de2926e..fbde2bcc8 100644 --- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-8.txt +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/OptGroup-8.txt @@ -2,21 +2,21 @@