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>