This is an automated email from the ASF dual-hosted git repository. amashchenko pushed a commit to branch struts-2-5-x in repository https://gitbox.apache.org/repos/asf/struts.git
commit 264e03b7ed0719227dd1d6afd374a3cf75135ab7 Author: Aleksandr Mashchenko <amashche...@apache.org> AuthorDate: Tue Dec 4 22:56:44 2018 +0200 Add listCssStyle to optgroup tag (cherry picked from commit 3c24bae87f196edf1cf116f8130e4d5f0891d0c0) --- .../main/java/org/apache/struts2/components/OptGroup.java | 5 +++++ .../java/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 ++++++++ .../java/org/apache/struts2/views/jsp/ui/OptGroupTest.java | 4 +++- .../resources/org/apache/struts2/views/jsp/ui/OptGroup-8.txt | 12 ++++++------ 6 files changed, 37 insertions(+), 7 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 8e992ca..3042989 100644 --- a/core/src/main/java/org/apache/struts2/components/OptGroup.java +++ b/core/src/main/java/org/apache/struts2/components/OptGroup.java @@ -145,4 +145,9 @@ public class OptGroup extends Component { public void setListCssClass(String listCssClass) { internalUiBean.setListCssClass(listCssClass); } + + @StrutsTagAttribute(description = "Property of list objects to get css style from") + public void setListCssStyle(String listCssStyle) { + internalUiBean.setListCssStyle(listCssStyle); + } } 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 443e575..870c754 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 @@ -37,6 +37,7 @@ public class OptGroupTag extends ComponentTagSupport { protected String listKey; protected String listValue; protected String listCssClass; + protected String listCssStyle; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new OptGroup(stack, req, res); @@ -52,6 +53,7 @@ public class OptGroupTag extends ComponentTagSupport { optGroup.setListKey(listKey); optGroup.setListValue(listValue); optGroup.setListCssClass(listCssClass); + optGroup.setListCssStyle(listCssStyle); } public void setList(String list) { @@ -77,4 +79,8 @@ public class OptGroupTag extends ComponentTagSupport { public void setListCssClass(String listCssClass) { this.listCssClass = listCssClass; } + + public void setListCssStyle(String listCssStyle) { + this.listCssStyle = listCssStyle; + } } diff --git a/core/src/main/resources/template/simple/optgroup.ftl b/core/src/main/resources/template/simple/optgroup.ftl index 9a4d3a7..0f04f21 100644 --- a/core/src/main/resources/template/simple/optgroup.ftl +++ b/core/src/main/resources/template/simple/optgroup.ftl @@ -41,6 +41,12 @@ <#assign optGroupItemCssClass= stack.findString(optGroupInternalListUiBean.parameters.listCssClass)/> </#if> </#if> + <#assign optGroupItemCssStyle = ''/> + <#if optGroupInternalListUiBean.parameters.listCssStyle??> + <#if stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)??> + <#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)/> + </#if> + </#if> <option value="${tmpKeyStr?html}"<#rt> <#if tag.contains(parameters.nameValue, tmpKey) == true> selected="selected"<#rt> @@ -48,6 +54,9 @@ <#if optGroupItemCssClass?has_content> class="${optGroupItemCssClass?html}"<#rt/> </#if> + <#if optGroupItemCssStyle?has_content> + style="${optGroupItemCssStyle?html}"<#rt/> + </#if> >${tmpValue?html}<#t> </option><#lt> <#assign trash=stack.pop() /> diff --git a/core/src/site/resources/tags/optgroup.html b/core/src/site/resources/tags/optgroup.html index 977a394..111fdae 100644 --- a/core/src/site/resources/tags/optgroup.html +++ b/core/src/site/resources/tags/optgroup.html @@ -66,6 +66,14 @@ Please do not edit it directly. <td align="left" valign="top">Property of list objects to get css class from</td> </tr> <tr> + <td align="left" valign="top">listCssStyle</td> + <td align="left" valign="top">false</td> + <td align="left" valign="top"></td> + <td align="left" valign="top">false</td> + <td align="left" valign="top">String</td> + <td align="left" valign="top">Property of list objects to get css style from</td> + </tr> + <tr> <td align="left" valign="top">listKey</td> <td align="left" valign="top">false</td> <td align="left" valign="top"></td> 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 81c0e12..4505c5b 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 @@ -253,17 +253,19 @@ public class OptGroupTest extends AbstractUITagTest { verify(SelectTag.class.getResource("OptGroup-6.txt")); } - public void testOptGroupListCssClass() throws Exception { + public void testOptGroupListAttributes() throws Exception { SelectTag selectTag = new SelectTag(); selectTag.setName("mySelection"); selectTag.setLabel("My Selection"); selectTag.setList("%{#{'ONE':'one','TWO':'two','THREE':'three'}}"); selectTag.setListCssClass("'option-css-class'"); + selectTag.setListCssStyle("'background-color: green;'"); 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;'"); 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 bc2c30f..52de292 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 @@ <td class="tdLabel"><label for="mySelection" class="label">My Selection:</label></td> <td class="tdInput"> <select name="mySelection" id="mySelection"> - <option value="ONE" class="option-css-class">one</option> - <option value="TWO" class="option-css-class">two</option> - <option value="THREE" class="option-css-class">three</option> + <option value="ONE" class="option-css-class" style="background-color: green;">one</option> + <option value="TWO" class="option-css-class" style="background-color: green;">two</option> + <option value="THREE" class="option-css-class" style="background-color: green;">three</option> <optgroup label="My Label 1" > - <option value="AAA" class="optgroup-option-css-class" + <option value="AAA" class="optgroup-option-css-class" style="background-color: blue;" >aaa </option> - <option value="BBB" class="optgroup-option-css-class" + <option value="BBB" class="optgroup-option-css-class" style="background-color: blue;" >bbb </option> - <option value="CCC" class="optgroup-option-css-class" + <option value="CCC" class="optgroup-option-css-class" style="background-color: blue;" >ccc </option> </optgroup>