diff --git a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
index 058699b41..09d671245 100644
--- a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
+++ b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
@@ -123,6 +123,14 @@ public class OptionTransferSelect extends DoubleListUIBean {
protected String rightUpLabel;
protected String rightDownLabel;
+ protected String addToLeftOnclick;
+ protected String addToRightOnclick;
+ protected String addAllToLeftOnclick;
+ protected String addAllToRightOnclick;
+ protected String selectAllOnclick;
+ protected String upDownOnLeftOnclick;
+ protected String upDownOnRightOnclick;
+
public OptionTransferSelect(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
super(stack, request, response);
@@ -252,6 +260,35 @@ public class OptionTransferSelect extends DoubleListUIBean {
rightDownLabel != null ? findValue(rightDownLabel, String.class) : "v");
+ // selectAllOnclick
+ addParameter("selectAllOnclick",
+ selectAllOnclick != null ? findValue(selectAllOnclick, String.class) : "");
+
+ // addToLeftOnclick
+ addParameter("addToLeftOnclick",
+ addToLeftOnclick != null ? findValue(addToLeftOnclick, String.class) : "");
+
+ // addToRightOnclick
+ addParameter("addToRightOnclick",
+ addToRightOnclick != null ? findValue(addToRightOnclick, String.class) : "");
+
+ // addAllToLeftOnclick
+ addParameter("addAllToLeftOnclick",
+ addAllToLeftOnclick != null ? findValue(addAllToLeftOnclick, String.class) : "");
+
+ // addAllToRightOnclick
+ addParameter("addAllToRightOnclick",
+ addAllToRightOnclick != null ? findValue(addAllToRightOnclick, String.class) : "");
+
+ // upDownOnLeftOnclick
+ addParameter("upDownOnLeftOnclick",
+ upDownOnLeftOnclick != null ? findValue(upDownOnLeftOnclick, String.class) : "");
+
+ // upDownOnRightOnclick
+ addParameter("upDownOnRightOnclick",
+ upDownOnRightOnclick != null ? findValue(upDownOnRightOnclick, String.class) : "");
+
+
// inform the form component our select tag infos, so they know how to select
// its elements upon onsubmit
@@ -476,5 +513,67 @@ public class OptionTransferSelect extends DoubleListUIBean {
return rightDownLabel;
}
+ public String getAddAllToLeftOnclick() {
+ return addAllToLeftOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after Add All To Left button pressed")
+ public void setAddAllToLeftOnclick(String addAllToLeftOnclick) {
+ this.addAllToLeftOnclick = addAllToLeftOnclick;
+ }
+
+ public String getAddAllToRightOnclick() {
+ return addAllToRightOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after Add All To Right button pressed")
+ public void setAddAllToRightOnclick(String addAllToRightOnclick) {
+ this.addAllToRightOnclick = addAllToRightOnclick;
+ }
+
+ public String getAddToLeftOnclick() {
+ return addToLeftOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after Add To Left button pressed")
+ public void setAddToLeftOnclick(String addToLeftOnclick) {
+ this.addToLeftOnclick = addToLeftOnclick;
+ }
+
+ public String getAddToRightOnclick() {
+ return addToRightOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after Add To Right button pressed")
+ public void setAddToRightOnclick(String addToRightOnclick) {
+ this.addToRightOnclick = addToRightOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after up / down on the left side buttons pressed")
+ public void setUpDownOnLeftOnclick(String upDownOnLeftOnclick) {
+ this.upDownOnLeftOnclick = upDownOnLeftOnclick;
+ }
+
+ public String getUpDownOnLeftOnclick() {
+ return this.upDownOnLeftOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after up / down on the right side buttons pressed")
+ public void setUpDownOnRightOnclick(String upDownOnRightOnclick) {
+ this.upDownOnRightOnclick = upDownOnRightOnclick;
+ }
+
+ public String getUpDownOnRightOnclick() {
+ return this.upDownOnRightOnclick;
+ }
+
+ @StrutsTagAttribute(description="Javascript to run after Select All button pressed")
+ public void setSelectAllOnclick(String selectAllOnclick) {
+ this.selectAllOnclick = selectAllOnclick;
+ }
+
+ public String getSelectAllOnclick() {
+ return this.selectAllOnclick;
+ }
}
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java
index a60bfdb97..af2d42af6 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java
@@ -59,6 +59,14 @@ public class OptionTransferSelectTag extends AbstractDoubleListTag {
protected String rightUpLabel;
protected String rightDownLabel;
+ protected String addToLeftOnclick;
+ protected String addToRightOnclick;
+ protected String addAllToLeftOnclick;
+ protected String addAllToRightOnclick;
+ protected String selectAllOnclick;
+ protected String upDownOnLeftOnclick;
+ protected String upDownOnRightOnclick;
+
public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
return new OptionTransferSelect(stack, req, res);
@@ -91,6 +99,14 @@ public class OptionTransferSelectTag extends AbstractDoubleListTag {
optionTransferSelect.setLeftTitle(leftTitle);
optionTransferSelect.setRightTitle(rightTitle);
+
+ optionTransferSelect.setAddToLeftOnclick(addToLeftOnclick);
+ optionTransferSelect.setAddToRightOnclick(addToRightOnclick);
+ optionTransferSelect.setAddAllToLeftOnclick(addAllToLeftOnclick);
+ optionTransferSelect.setAddAllToRightOnclick(addAllToRightOnclick);
+ optionTransferSelect.setSelectAllOnclick(selectAllOnclick);
+ optionTransferSelect.setUpDownOnLeftOnclick(upDownOnLeftOnclick);
+ optionTransferSelect.setUpDownOnRightOnclick(upDownOnRightOnclick);
}
@@ -272,4 +288,60 @@ public class OptionTransferSelectTag extends AbstractDoubleListTag {
public String getButtonCssStyle() {
return this.buttonCssStyle;
}
+
+ public String getAddAllToLeftOnclick() {
+ return addAllToLeftOnclick;
+ }
+
+ public void setAddAllToLeftOnclick(String addAllToLeftOnclick) {
+ this.addAllToLeftOnclick = addAllToLeftOnclick;
+ }
+
+ public String getAddAllToRightOnclick() {
+ return addAllToRightOnclick;
+ }
+
+ public void setAddAllToRightOnclick(String addAllToRightOnclick) {
+ this.addAllToRightOnclick = addAllToRightOnclick;
+ }
+
+ public String getAddToLeftOnclick() {
+ return addToLeftOnclick;
+ }
+
+ public void setAddToLeftOnclick(String addToLeftOnclick) {
+ this.addToLeftOnclick = addToLeftOnclick;
+ }
+
+ public String getAddToRightOnclick() {
+ return addToRightOnclick;
+ }
+
+ public void setAddToRightOnclick(String addToRightOnclick) {
+ this.addToRightOnclick = addToRightOnclick;
+ }
+
+ public String getUpDownOnLeftOnclick() {
+ return upDownOnLeftOnclick;
+ }
+
+ public void setUpDownOnLeftOnclick(String upDownOnLeftOnclick) {
+ this.upDownOnLeftOnclick = upDownOnLeftOnclick;
+ }
+
+ public String getUpDownOnRightOnclick() {
+ return upDownOnRightOnclick;
+ }
+
+ public void setUpDownOnRightOnclick(String upDownOnRightOnclick) {
+ this.upDownOnRightOnclick = upDownOnRightOnclick;
+ }
+
+ public void setSelectAllOnclick(String selectAllOnclick) {
+ this.selectAllOnclick = selectAllOnclick;
+ }
+
+ public String getSelectAllOnclick() {
+ return this.selectAllOnclick;
+ }
}
diff --git a/core/src/main/resources/template/simple/optiontransferselect.ftl b/core/src/main/resources/template/simple/optiontransferselect.ftl
index 58a40271b..e53327bef 100644
--- a/core/src/main/resources/template/simple/optiontransferselect.ftl
+++ b/core/src/main/resources/template/simple/optiontransferselect.ftl
@@ -11,21 +11,13 @@
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#if parameters.allowUpDownOnLeft?default(true)>
- onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
-<#else>
- onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');"
-#if>
+ onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey?exists>'${parameters.headerKey}'<#else>''#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};#if>"
<#if parameters.leftDownLabel?exists>
value="${parameters.leftDownLabel?html}"
#if>
/>
- onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
-<#else>
- onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');"
-#if>
+ onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey?exists>'${parameters.headerKey}'<#else>''#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};#if>"
<#if parameters.leftUpLabel?exists>
value="${parameters.leftUpLabel?html}"
#if>
@@ -44,7 +36,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '')" />
+ value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addToLeftOnclick?has_content>${parameters.addToLeftOnclick};#if>" />
<#else><#t/>
<#t/>
@@ -53,7 +45,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '')" />
+ value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '');<#if parameters.addToLeftOnclick?has_content>${parameters.addToLeftOnclick};#if>" />
#if><#t/>
#if><#t/>
<#if parameters.allowAddToRight?default(true)><#t/>
@@ -66,7 +58,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '')" />
+ value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '');<#if parameters.addToRightOnclick?has_content>${parameters.addToRightOnclick};#if>" />
<#else><#t/>
<#t/>
@@ -75,7 +67,7 @@
<#if parameters.buttonCssStyle?exists>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '')" />
+ value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '');<#if parameters.addToRightOnclick?has_content>${parameters.addToRightOnclick};#if>" />
#if><#t/>
#if><#t/>
<#if parameters.allowAddAllToLeft?default(true)><#t/>
@@ -88,7 +80,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle}"
#if><#t/>
- value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '')" />
+ value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addAllToLeftOnclick?has_content>${parameters.addAllToLeftOnclick};#if>" />
<#else><#t/>
<#t/>
@@ -97,7 +89,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '')" />
+ value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '');<#if parameters.addAllToLeftOnclick?has_content>${parameters.addAllToLeftOnclick};#if>" />
#if><#t/>
#if><#t/>
<#if parameters.allowAddAllToRight?default(true)><#t/>
@@ -110,7 +102,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '')" />
+ value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '');<#if parameters.addAllToRightOnclick?has_content>${parameters.addAllToRightOnclick};#if>" />
<#else><#t/>
<#t/>
@@ -119,7 +111,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '')" />
+ value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '');<#if parameters.addAllToRightOnclick?has_content>${parameters.addAllToRightOnclick};#if>" />
#if><#t/>
#if><#t/>
<#if parameters.allowSelectAll?default(true)><#t/>
@@ -132,7 +124,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');" />
+ value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};#if>" />
<#elseif parameters.headerKey?exists><#t/>
<#t/>
@@ -141,7 +133,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptions(document.getElementById('${parameters.doubleId?html}'));" />
+ value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptions(document.getElementById('${parameters.doubleId?html}'));<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};#if>" />
<#elseif parameters.doubleHeaderKey?exists><#t/>
<#t/>
@@ -150,7 +142,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');" />
+ value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};#if>" />
<#else><#t/>
<#t/>
@@ -159,7 +151,7 @@
<#if parameters.buttonCssStyle?exists><#t/>
style="${parameters.buttonCssStyle?html}"
#if><#t/>
- value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptions(document.getElementById('${parameters.doubleId?html}'));" />
+ value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptions(document.getElementById('${parameters.doubleId?html}'));<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};#if>" />
#if><#t/>
#if><#t/>
@@ -260,21 +252,13 @@
<#if parameters.allowUpDownOnRight?default(true)>
- onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');"
-<#else>
- onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', '');"
-#if>
+ onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey?exists>'${parameters.doubleHeaderKey}'<#else>''#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};#if>"
<#if parameters.rightDownLabel?exists>
value="${parameters.rightDownLabel?html}"
#if>
/>
- onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');"
-<#else>
- onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', '');"
-#if>
+ onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey?exists>'${parameters.doubleHeaderKey}'<#else>''#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};#if>"
<#if parameters.rightUpLabel?exists>
value="${parameters.rightUpLabel?html}"
#if>
diff --git a/core/src/site/resources/tags/optiontransferselect.html b/core/src/site/resources/tags/optiontransferselect.html
index 3a417a694..66c64d2cb 100644
--- a/core/src/site/resources/tags/optiontransferselect.html
+++ b/core/src/site/resources/tags/optiontransferselect.html
@@ -43,6 +43,14 @@ Please do not edit it directly.