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 d33930f3bdb969e3899f28105b7e799cea0f0f2b
Author: Aleksandr Mashchenko <amashche...@apache.org>
AuthorDate: Tue Dec 4 22:25:15 2018 +0200

    WW-4987 Add listCssClass to optgroup tag
---
 .../org/apache/struts2/components/OptGroup.java    |  5 +++++
 .../apache/struts2/views/jsp/ui/OptGroupTag.java   |  6 ++++++
 .../main/resources/template/simple/optgroup.ftl    | 24 ++++++++++++++--------
 core/src/site/resources/tags/optgroup.html         |  8 ++++++++
 4 files changed, 35 insertions(+), 8 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 58d0b9a..8e992ca 100644
--- a/core/src/main/java/org/apache/struts2/components/OptGroup.java
+++ b/core/src/main/java/org/apache/struts2/components/OptGroup.java
@@ -140,4 +140,9 @@ public class OptGroup extends Component {
     public void setListValue(String listValue) {
         internalUiBean.setListValue(listValue);
     }
+
+    @StrutsTagAttribute(description = "Property of list objects to get css 
class from")
+    public void setListCssClass(String listCssClass) {
+        internalUiBean.setListCssClass(listCssClass);
+    }
 }
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 da2c1dc..443e575 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
@@ -36,6 +36,7 @@ public class OptGroupTag extends ComponentTagSupport {
     protected String disabled;
     protected String listKey;
     protected String listValue;
+    protected String listCssClass;
 
     public Component getBean(ValueStack stack, HttpServletRequest req, 
HttpServletResponse res) {
         return new OptGroup(stack, req, res);
@@ -50,6 +51,7 @@ public class OptGroupTag extends ComponentTagSupport {
         optGroup.setDisabled(disabled);
         optGroup.setListKey(listKey);
         optGroup.setListValue(listValue);
+        optGroup.setListCssClass(listCssClass);
     }
 
     public void setList(String list) {
@@ -71,4 +73,8 @@ public class OptGroupTag extends ComponentTagSupport {
     public void setListValue(String listValue) {
         this.listValue = listValue;
     }
+
+    public void setListCssClass(String listCssClass) {
+        this.listCssClass = listCssClass;
+    }
 }
diff --git a/core/src/main/resources/template/simple/optgroup.ftl 
b/core/src/main/resources/template/simple/optgroup.ftl
index f1f8a3e..9a4d3a7 100644
--- a/core/src/main/resources/template/simple/optgroup.ftl
+++ b/core/src/main/resources/template/simple/optgroup.ftl
@@ -21,27 +21,35 @@
 <#if parameters.optGroupInternalListUiBeanList??>
 <#assign optGroupInternalListUiBeans=parameters.optGroupInternalListUiBeanList 
/>
 <#list optGroupInternalListUiBeans as optGroupInternalListUiBean>
-<optgroup 
+<optgroup<#rt>
        <#if optGroupInternalListUiBean.parameters.label?has_content>
-       label="${optGroupInternalListUiBean.parameters.label}"
+ label="${optGroupInternalListUiBean.parameters.label}"<#rt>
        </#if>
        <#if optGroupInternalListUiBean.parameters.disabled!false>
-       disabled="disabled"
+ disabled="disabled"<#rt>
        </#if>
 <#include 
"/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
 >
-
 <#list optGroupInternalListUiBean.parameters.list as optGroupBean>
 <#assign trash=stack.push(optGroupBean) />
        <#assign 
tmpKey=stack.findValue(optGroupInternalListUiBean.parameters.listKey) />
        <#assign 
tmpValue=stack.findValue(optGroupInternalListUiBean.parameters.listValue) />
        <#assign tmpKeyStr = tmpKey.toString() />
-       <option value="${tmpKeyStr?html}"
+       <#assign optGroupItemCssClass = ''/>
+       <#if optGroupInternalListUiBean.parameters.listCssClass??>
+               <#if 
stack.findString(optGroupInternalListUiBean.parameters.listCssClass)??>
+                       <#assign optGroupItemCssClass= 
stack.findString(optGroupInternalListUiBean.parameters.listCssClass)/>
+               </#if>
+       </#if>
+       <option value="${tmpKeyStr?html}"<#rt>
        <#if tag.contains(parameters.nameValue, tmpKey) == true>
-       selected="selected"
+       selected="selected"<#rt>
+       </#if>
+       <#if optGroupItemCssClass?has_content>
+       class="${optGroupItemCssClass?html}"<#rt/>
        </#if>
-       >${tmpValue?html}
-       </option>
+       >${tmpValue?html}<#t>
+       </option><#lt>
 <#assign trash=stack.pop() />
 </#list>
 </optgroup>
diff --git a/core/src/site/resources/tags/optgroup.html 
b/core/src/site/resources/tags/optgroup.html
index 3198d0e..977a394 100644
--- a/core/src/site/resources/tags/optgroup.html
+++ b/core/src/site/resources/tags/optgroup.html
@@ -58,6 +58,14 @@ Please do not edit it directly.
                                        <td align="left" valign="top">Set the 
list attribute.</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">listCssClass</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 class from</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">listKey</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top"></td>

Reply via email to