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 03c6a395c..5f2e2ace2 100644 --- a/core/src/main/java/org/apache/struts2/components/OptGroup.java +++ b/core/src/main/java/org/apache/struts2/components/OptGroup.java @@ -150,4 +150,9 @@ public class OptGroup extends Component { public void setListCssStyle(String listCssStyle) { internalUiBean.setListCssStyle(listCssStyle); } + + @StrutsTagAttribute(description = "Property of list objects to get title from") + public void setListTitle(String listTitle) { + internalUiBean.setListTitle(listTitle); + } } 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 870c754bc..bd90ff5a3 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 @@ -38,6 +38,7 @@ public class OptGroupTag extends ComponentTagSupport { protected String listValue; protected String listCssClass; protected String listCssStyle; + protected String listTitle; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new OptGroup(stack, req, res); @@ -54,6 +55,7 @@ public class OptGroupTag extends ComponentTagSupport { optGroup.setListValue(listValue); optGroup.setListCssClass(listCssClass); optGroup.setListCssStyle(listCssStyle); + optGroup.setListTitle(listTitle); } public void setList(String list) { @@ -83,4 +85,8 @@ public class OptGroupTag extends ComponentTagSupport { public void setListCssStyle(String listCssStyle) { this.listCssStyle = listCssStyle; } + + public void setListTitle(String listTitle) { + this.listTitle = listTitle; + } } diff --git a/core/src/main/resources/template/simple/optgroup.ftl b/core/src/main/resources/template/simple/optgroup.ftl index 0f04f2130..a424fe776 100644 --- a/core/src/main/resources/template/simple/optgroup.ftl +++ b/core/src/main/resources/template/simple/optgroup.ftl @@ -47,6 +47,12 @@ <#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)/> #if> #if> + <#assign optGroupItemTitle = ''/> + <#if optGroupInternalListUiBean.parameters.listTitle??> + <#if stack.findString(optGroupInternalListUiBean.parameters.listTitle)??> + <#assign optGroupItemTitle= stack.findString(optGroupInternalListUiBean.parameters.listTitle)/> + #if> + #if> <#lt> <#assign trash=stack.pop() /> diff --git a/core/src/site/resources/tags/optgroup.html b/core/src/site/resources/tags/optgroup.html index 111fdae28..5a57e954d 100644 --- a/core/src/site/resources/tags/optgroup.html +++ b/core/src/site/resources/tags/optgroup.html @@ -81,6 +81,14 @@ Please do not edit it directly.