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>

Reply via email to