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 b2b6f0d51..03c6a395c 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 443e575f5..870c754bc 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 9a4d3a76f..0f04f2130 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)/> + <#assign optGroupItemCssStyle = ''/> + <#if optGroupInternalListUiBean.parameters.listCssStyle??> + <#if stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)??> + <#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)/> + + <#lt> <#assign trash=stack.pop() /> diff --git a/core/src/site/resources/tags/optgroup.html b/core/src/site/resources/tags/optgroup.html index 977a394e5..111fdae28 100644 --- a/core/src/site/resources/tags/optgroup.html +++ b/core/src/site/resources/tags/optgroup.html @@ -65,6 +65,14 @@ Please do not edit it directly. String Property of list objects to get css class from + + listCssStyle + false + + false + String + Property of list objects to get css style from + listKey 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 81c0e12a6..4505c5bbe 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 bc2c30feb..52de2926e 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 @@