You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2012/07/29 20:23:07 UTC

svn commit: r1366884 - in /struts/struts2/trunk: apps/showcase/src/main/java/org/apache/struts2/showcase/ apps/showcase/src/main/resources/ apps/showcase/src/main/webapp/tags/ui/ core/src/main/java/org/apache/struts2/components/ core/src/main/java/org/...

Author: jogep
Date: Sun Jul 29 18:23:06 2012
New Revision: 1366884

URL: http://svn.apache.org/viewvc?rev=1366884&view=rev
Log:
WW-3846 Add a new attributes for optionsCollection

Modified:
    struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/UITagExample.java
    struts/struts2/trunk/apps/showcase/src/main/resources/log4j.properties
    struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java
    struts/struts2/trunk/core/src/main/resources/template/simple/combobox.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/doubleselect.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/radiomap.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
    struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html
    struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html
    struts/struts2/trunk/core/src/site/resources/tags/inputtransferselect.html
    struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html
    struts/struts2/trunk/core/src/site/resources/tags/radio.html
    struts/struts2/trunk/core/src/site/resources/tags/select.html
    struts/struts2/trunk/core/src/site/resources/tags/updownselect.html

Modified: struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/UITagExample.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/UITagExample.java?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/UITagExample.java (original)
+++ struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/UITagExample.java Sun Jul 29 18:23:06 2012
@@ -26,12 +26,7 @@ import com.opensymphony.xwork2.util.Valu
 import org.apache.struts2.ServletActionContext;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  */
@@ -67,9 +62,9 @@ public class UITagExample extends Action
     String thoughts;
 
     public UITagExample() {
-        favouriteLanguages.add(new Language("EnglishKey", "English Language"));
-        favouriteLanguages.add(new Language("FrenchKey", "French Language"));
-        favouriteLanguages.add(new Language("SpanishKey", "Spanish Language"));
+        favouriteLanguages.add(new Language("EnglishKey", "English Language", "color: blue; font-style: italic;"));
+        favouriteLanguages.add(new Language("FrenchKey", "French Language", "color: grey;"));
+        favouriteLanguages.add(new Language("SpanishKey", "Spanish Language", "color: red; font-wight: bold;"));
 
         VehicalType car = new VehicalType("CarKey", "Car");
         VehicalType motorcycle = new VehicalType("MotorcycleKey", "Motorcycle");
@@ -268,10 +263,12 @@ public class UITagExample extends Action
     public static class Language {
         String description;
         String key;
+        String style;
 
-        public Language(String key, String description) {
+        public Language(String key, String description, String style) {
             this.key = key;
             this.description = description;
+            this.style = style;
         }
 
         public String getKey() {
@@ -280,6 +277,9 @@ public class UITagExample extends Action
         public String getDescription() {
             return description;
         }
+        public String getStyle() {
+            return style;
+        }
 
     }
 

Modified: struts/struts2/trunk/apps/showcase/src/main/resources/log4j.properties
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/log4j.properties?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/resources/log4j.properties (original)
+++ struts/struts2/trunk/apps/showcase/src/main/resources/log4j.properties Sun Jul 29 18:23:06 2012
@@ -24,7 +24,7 @@ log4j.logger.noModule=FATAL
 
 # OpenSymphony Stuff
 log4j.logger.com.opensymphony=INFO
-log4j.logger.org.apache.struts2=DEBUG
+log4j.logger.org.apache.struts2=INFO
 
 # Spring Stuff
 log4j.logger.org.springframework=INFO

Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp (original)
+++ struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp Sun Jul 29 18:23:06 2012
@@ -55,6 +55,7 @@
             name="favouriteLanguage"
             listKey="key"
             listValue="description"
+            listCssStyle="style"
             emptyOption="true"
             headerKey="None"
             headerValue="None"/>

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java Sun Jul 29 18:23:06 2012
@@ -21,14 +21,12 @@
 
 package org.apache.struts2.components;
 
-import java.util.Map;
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts2.views.annotations.StrutsTagAttribute;
-
-import com.opensymphony.xwork2.util.ValueStack;
+import java.util.Map;
 
 /**
  * DoubleListUIBean is the standard superclass of all Struts double list handling components.
@@ -55,6 +53,9 @@ public abstract class DoubleListUIBean e
     protected String doubleList;
     protected String doubleListKey;
     protected String doubleListValue;
+    protected String doubleListCssClass;
+    protected String doubleListCssStyle;
+    protected String doubleListTitle;
     protected String doubleName;
     protected String doubleValue;
     protected String formName;
@@ -149,6 +150,15 @@ public abstract class DoubleListUIBean e
         }else if (tmpDoubleList instanceof Map) {
             addParameter("doubleListValue", "value");
         }
+        if (doubleListCssClass != null) {
+            addParameter("doubleListCssClass", findString(doubleListCssClass));
+        }
+        if (doubleListCssStyle!= null) {
+            addParameter("doubleListCssStyle", findString(doubleListCssStyle));
+        }
+        if (doubleListTitle != null) {
+            addParameter("doubleListTitle", findString(doubleListTitle));
+        }
 
 
         if (formName != null) {
@@ -276,6 +286,21 @@ public abstract class DoubleListUIBean e
         this.doubleListValue = doubleListValue;
     }
 
+    @StrutsTagAttribute(description = "Property of second list objects to get css class from")
+     public void setDoubleListCssClass(String doubleListCssClass) {
+        this.doubleListCssClass = doubleListCssClass;
+    }
+
+    @StrutsTagAttribute(description = "Property of second list objects to get css style from")
+    public void setDoubleListCssStyle(String doubleListCssStyle) {
+        this.doubleListCssStyle = doubleListCssStyle;
+    }
+
+    @StrutsTagAttribute(description = "Property of second list objects to get title from")
+    public void setDoubleListTitle(String doubleListTitle) {
+        this.doubleListTitle = doubleListTitle;
+    }
+
     @StrutsTagAttribute(description="The name for complete component", required=true)
     public void setDoubleName(String doubleName) {
         this.doubleName = doubleName;

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java Sun Jul 29 18:23:06 2012
@@ -21,37 +21,37 @@
 
 package org.apache.struts2.components;
 
-import java.lang.reflect.Array;
-import java.util.Collection;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts2.views.annotations.StrutsTagAttribute;
+import com.opensymphony.xwork2.util.ValueStack;
 import org.apache.struts2.util.ContainUtil;
 import org.apache.struts2.util.MakeIterator;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
-import com.opensymphony.xwork2.util.ValueStack;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Array;
+import java.util.Collection;
+import java.util.Map;
 
 /**
  * DoubleListUIBean is the standard superclass of all Struts list handling components.
- *
  * <p/>
- *
+ * <p/>
+ * <p/>
  * <!-- START SNIPPET: javadoc -->
- *
+ * <p/>
  * Note that the listkey and listvalue attribute will default to "key" and "value"
  * respectively only when the list attribute is evaluated to a Map or its decendant.
  * Everything else will result in listkey and listvalue to be null and not used.
- *
+ * <p/>
  * <!-- END SNIPPET: javadoc -->
- *
  */
 public abstract class ListUIBean extends UIBean {
     protected Object list;
     protected String listKey;
     protected String listValue;
+    protected String listCssClass;
+    protected String listCssStyle;
+    protected String listTitle;
 
     // indicate if an exception is to be thrown when value attribute is null
     protected boolean throwExceptionOnNullValueAttribute = false;
@@ -78,13 +78,12 @@ public abstract class ListUIBean extends
             if (throwExceptionOnNullValueAttribute) {
                 // will throw an exception if not found
                 value = findValue((list == null) ? (String) list : list.toString(), "list",
-                    "The requested list key '" + list + "' could not be resolved as a collection/array/map/enumeration/iterator type. " +
-                    "Example: people or people.{name}");
-            }
-            else {
+                        "The requested list key '" + list + "' could not be resolved as a collection/array/map/enumeration/iterator type. " +
+                                "Example: people or people.{name}");
+            } else {
                 // ww-1010, allows value with null value to be compatible with ww
                 // 2.1.7 behaviour
-                value = findValue((list == null)?(String) list:list.toString());
+                value = findValue((list == null) ? (String) list : list.toString());
             }
         }
 
@@ -103,18 +102,30 @@ public abstract class ListUIBean extends
         }
 
         if (listKey != null) {
-        	listKey = stripExpressionIfAltSyntax(listKey);
+            listKey = stripExpressionIfAltSyntax(listKey);
             addParameter("listKey", listKey);
         } else if (value instanceof Map) {
             addParameter("listKey", "key");
         }
 
         if (listValue != null) {
-        	listValue = stripExpressionIfAltSyntax(listValue);
+            listValue = stripExpressionIfAltSyntax(listValue);
             addParameter("listValue", listValue);
         } else if (value instanceof Map) {
             addParameter("listValue", "value");
         }
+
+        if (listCssClass != null && listCssClass.trim().length() > 0) {
+            addParameter("listCssClass", listCssClass);
+        }
+
+        if (listCssStyle != null && listCssStyle.trim().length() > 0) {
+            addParameter("listCssStyle", listCssStyle);
+        }
+
+        if (listTitle != null && listTitle.trim().length() > 0) {
+            addParameter("listTitle", listTitle);
+        }
     }
 
     public boolean contains(Object obj1, Object obj2) {
@@ -125,22 +136,37 @@ public abstract class ListUIBean extends
         return null; // don't convert nameValue to anything, we need the raw value
     }
 
-    @StrutsTagAttribute(description="Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value'" +
-                " parameter and the Map value will become the option body.", required=true)
+    @StrutsTagAttribute(description = "Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value'" +
+            " parameter and the Map value will become the option body.", required = true)
     public void setList(Object list) {
         this.list = list;
     }
 
-    @StrutsTagAttribute(description=" Property of list objects to get field value from")
+    @StrutsTagAttribute(description = " Property of list objects to get field value from")
     public void setListKey(String listKey) {
         this.listKey = listKey;
     }
 
-    @StrutsTagAttribute(description="Property of list objects to get field content from")
+    @StrutsTagAttribute(description = "Property of list objects to get field content from")
     public void setListValue(String listValue) {
         this.listValue = listValue;
     }
 
+    @StrutsTagAttribute(description = "Property of list objects to get css class from")
+    public void setListCssClass(String listCssClass) {
+        this.listCssClass = listCssClass;
+    }
+
+    @StrutsTagAttribute(description = "Property of list objects to get css style from")
+    public void setListCssStyle(String listCssStyle) {
+        this.listCssStyle = listCssStyle;
+    }
+
+    @StrutsTagAttribute(description = "Property of list objects to get title from")
+    public void setListTitle(String listTitle) {
+        this.listTitle = listTitle;
+    }
+
 
     public void setThrowExceptionOnNullValueAttribute(boolean throwExceptionOnNullValueAttribute) {
         this.throwExceptionOnNullValueAttribute = throwExceptionOnNullValueAttribute;

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractListTag.java Sun Jul 29 18:23:06 2012
@@ -29,6 +29,9 @@ public abstract class AbstractListTag ex
     protected String list;
     protected String listKey;
     protected String listValue;
+    protected String listCssClass;
+    protected String listCssStyle;
+    protected String listTitle;
 
     protected void populateParams() {
         super.populateParams();
@@ -37,6 +40,9 @@ public abstract class AbstractListTag ex
         listUIBean.setList(list);
         listUIBean.setListKey(listKey);
         listUIBean.setListValue(listValue);
+        listUIBean.setListCssClass(listCssClass);
+        listUIBean.setListCssStyle(listCssStyle);
+        listUIBean.setListTitle(listTitle);
     }
 
     public void setList(String list) {
@@ -50,4 +56,16 @@ public abstract class AbstractListTag ex
     public void setListValue(String listValue) {
         this.listValue = listValue;
     }
+
+    public void setListCssClass(String listCssClass) {
+        this.listCssClass = listCssClass;
+    }
+
+    public void setListCssStyle(String listCssStyle) {
+        this.listCssStyle = listCssStyle;
+    }
+
+    public void setListTitle(String listTitle) {
+        this.listTitle = listTitle;
+    }
 }

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/combobox.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/combobox.ftl?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/combobox.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/combobox.ftl Sun Jul 29 18:23:06 2012
@@ -61,10 +61,40 @@
     <#else>
     	<#assign tmpListValue = stack.findString('top') />
     </#if>
+    <#if parameters.listCssClass??>
+        <#if stack.findString(parameters.listCssClass)??>
+          <#assign itemCssClass= stack.findString(parameters.listCssClass)/>
+        <#else>
+          <#assign itemCssClass = ''/>
+        </#if>
+    </#if>
+    <#if parameters.listCssStyle??>
+        <#if stack.findString(parameters.listCssStyle)??>
+          <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
+        <#else>
+          <#assign itemCssStyle = ''/>
+        </#if>
+    </#if>
+    <#if parameters.listTitle??>
+        <#if stack.findString(parameters.listTitle)??>
+          <#assign itemTitle= stack.findString(parameters.listTitle)/>
+        <#else>
+          <#assign itemTitle = ''/>
+        </#if>
+    </#if>
     <option value="${tmpListKey?html}"<#rt/>
         <#if (parameters.nameValue == tmpListKey)>
  selected="selected"<#rt/>
         </#if>
+        <#if itemCssClass?if_exists != "">
+ class="${itemCssClass?html}"<#rt/>
+        </#if>
+        <#if itemCssStyle?if_exists != "">
+ style="${itemCssStyle?html}"<#rt/>
+        </#if>
+        <#if itemTitle?if_exists != "">
+ title="${itemTitle?html}"<#rt/>
+        </#if>
     ><#t/>
             ${tmpListValue?html}<#t/>
     </option><#lt/>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/doubleselect.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/doubleselect.ftl?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/doubleselect.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/doubleselect.ftl Sun Jul 29 18:23:06 2012
@@ -110,7 +110,37 @@
             <#else>
                 <#assign doubleItemValue = stack.findString('top')/>
         </#if>
+        <#if parameters.doubleListCssClass??>
+            <#if stack.findString(parameters.doubleListCssClass)??>
+              <#assign itemDoubleCssClass= stack.findString(parameters.doubleListCssClass)/>
+            <#else>
+              <#assign itemDoubleCssClass = ''/>
+            </#if>
+        </#if>
+        <#if parameters.doubleListCssStyle??>
+            <#if stack.findString(parameters.doubleListCssStyle)??>
+              <#assign itemDoubleCssStyle= stack.findString(parameters.doubleListCssStyle)/>
+            <#else>
+              <#assign itemDoubleCssStyle = ''/>
+            </#if>
+        </#if>
+        <#if parameters.doubleListTitle??>
+            <#if stack.findString(parameters.doubleListTitle)??>
+              <#assign itemDoubleTitle= stack.findString(parameters.doubleListTitle)/>
+            <#else>
+              <#assign itemDoubleTitle = ''/>
+            </#if>
+        </#if>
     ${parameters.id}Group[${itemCount}][${doubleItemCount}] = new Option("${doubleItemValue?js_string}", "${doubleItemKeyStr?js_string}");
+        <#if itemDoubleCssClass?if_exists != "">
+    ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("class","${itemDoubleCssClass?html}");
+        </#if>
+        <#if itemDoubleCssStyle?if_exists != "">
+        ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("style","${itemDoubleCssStyle?html}");
+        </#if>
+        <#if itemDoubleTitle?if_exists != "">
+        ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("title","${itemDoubleTitle?html}");
+        </#if>
 
         <#assign doubleItemCount = doubleItemCount + 1/>
     </...@s.iterator>

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/radiomap.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/radiomap.ftl?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/radiomap.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/radiomap.ftl Sun Jul 29 18:23:06 2012
@@ -32,6 +32,27 @@
     <#else>
         <#assign itemValue = stack.findString('top')/>
     </#if>
+    <#if parameters.listCssClass??>
+        <#if stack.findString(parameters.listCssClass)??>
+          <#assign itemCssClass= stack.findString(parameters.listCssClass)/>
+        <#else>
+          <#assign itemCssClass = ''/>
+        </#if>
+    </#if>
+    <#if parameters.listCssStyle??>
+        <#if stack.findString(parameters.listCssStyle)??>
+          <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
+        <#else>
+          <#assign itemCssStyle = ''/>
+        </#if>
+    </#if>
+    <#if parameters.listTitle??>
+        <#if stack.findString(parameters.listTitle)??>
+          <#assign itemTitle= stack.findString(parameters.listTitle)/>
+        <#else>
+          <#assign itemTitle = ''/>
+        </#if>
+    </#if>
 <input type="radio"<#rt/>
 <#if parameters.name??>
  name="${parameters.name?html}"<#rt/>
@@ -49,16 +70,28 @@
 <#if parameters.tabindex??>
  tabindex="${parameters.tabindex?html}"<#rt/>
 </#if>
-<#if parameters.cssClass??>
+<#if itemCssClass?if_exists != "">
+ class="${itemCssClass?html}"<#rt/>
+<#else>
+    <#if parameters.cssClass??>
  class="${parameters.cssClass?html}"<#rt/>
+    </#if>
 </#if>
-<#if parameters.cssStyle??>
+<#if itemCssStyle?if_exists != "">
+ style="${itemCssStyle?html}"<#rt/>
+<#else>
+    <#if parameters.cssStyle??>
  style="${parameters.cssStyle?html}"<#rt/>
+    </#if>
 </#if>
-<#include "/${parameters.templateDir}/simple/css.ftl" />
-<#if parameters.title??>
+<#if itemTitle?if_exists != "">
+ title="${itemTitle?html}"<#rt/>
+<#else>
+    <#if parameters.title??>
  title="${parameters.title?html}"<#rt/>
+    </#if>
 </#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
 <#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />

Modified: struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl Sun Jul 29 18:23:06 2012
@@ -78,10 +78,40 @@
         <#else>
             <#assign itemValue = stack.findString('top')/>
         </#if>
+        <#if parameters.listCssClass??>
+            <#if stack.findString(parameters.listCssClass)??>
+              <#assign itemCssClass= stack.findString(parameters.listCssClass)/>
+            <#else>
+              <#assign itemCssClass = ''/>
+            </#if>
+        </#if>
+        <#if parameters.listCssStyle??>
+            <#if stack.findString(parameters.listCssStyle)??>
+              <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
+            <#else>
+              <#assign itemCssStyle = ''/>
+            </#if>
+        </#if>
+        <#if parameters.listTitle??>
+            <#if stack.findString(parameters.listTitle)??>
+              <#assign itemTitle= stack.findString(parameters.listTitle)/>
+            <#else>
+              <#assign itemTitle = ''/>
+            </#if>
+        </#if>
     <option value="${itemKeyStr?html}"<#rt/>
         <#if tag.contains(parameters.nameValue, itemKey) == true>
  selected="selected"<#rt/>
         </#if>
+        <#if itemCssClass?if_exists != "">
+ class="${itemCssClass?html}"<#rt/>
+        </#if>
+        <#if itemCssStyle?if_exists != "">
+ style="${itemCssStyle?html}"<#rt/>
+        </#if>
+        <#if itemTitle?if_exists != "">
+ title="${itemTitle?html}"<#rt/>
+        </#if>
     >${itemValue?html}</option><#lt/>
 </...@s.iterator>
 

Modified: struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html Sun Jul 29 18:23:06 2012
@@ -138,6 +138,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -146,6 +162,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html Sun Jul 29 18:23:06 2012
@@ -154,6 +154,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">The second iterable source to populate from.</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">doubleListCssClass</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 second list objects to get css class from</td>
+				</tr>
+				<tr>
+					<td align="left" valign="top">doubleListCssStyle</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 second list objects to get css style from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">doubleListKey</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -162,6 +178,14 @@ Please do not edit it directly.
 					<td align="left" valign="top">The key expression to use for second list</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">doubleListTitle</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 second list objects to get title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">doubleListValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -402,6 +426,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -410,6 +450,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/inputtransferselect.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/inputtransferselect.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/inputtransferselect.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/inputtransferselect.html Sun Jul 29 18:23:06 2012
@@ -210,6 +210,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -218,6 +234,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html Sun Jul 29 18:23:06 2012
@@ -290,6 +290,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">The second iterable source to populate from.</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">doubleListCssClass</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 second list objects to get css class from</td>
+				</tr>
+				<tr>
+					<td align="left" valign="top">doubleListCssStyle</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 second list objects to get css style from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">doubleListKey</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -298,6 +314,14 @@ Please do not edit it directly.
 					<td align="left" valign="top">The key expression to use for second list</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">doubleListTitle</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 second list objects to get title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">doubleListValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -562,6 +586,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -570,6 +610,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/radio.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/radio.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/radio.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/radio.html Sun Jul 29 18:23:06 2012
@@ -138,6 +138,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -146,6 +162,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/select.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/select.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/select.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/select.html Sun Jul 29 18:23:06 2012
@@ -162,6 +162,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -170,6 +186,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/updownselect.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/updownselect.html?rev=1366884&r1=1366883&r2=1366884&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/updownselect.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/updownselect.html Sun Jul 29 18:23:06 2012
@@ -186,6 +186,22 @@ Please do not edit it directly.
 					<td align="left" valign="top">Iterable source to populate from. If the list is a Map (key, value), the Map key will become the option 'value' parameter and the Map value will become the option body.</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">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>
@@ -194,6 +210,14 @@ Please do not edit it directly.
 					<td align="left" valign="top"> Property of list objects to get field value from</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">listTitle</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 title from</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">listValue</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>