最近用到struts2 <s:optiontransferselect/>标签,要求在action中获取<s:optiontransferselect/>标签中的内容
出现这个问题后,发现确实很难实现,所以就Google了下,但获取答案却不理想
但研究struts2的demo后,发现他们可以正常获取的,所以就研究了下,发现问题其实很简单:
在此,借用下Google时,搜索到的一个问题
<s:form action="TestTagLib">
<s:optiontransferselect
label="optiontransferselect Test"
labelposition="top"
list="{'thomas1','ada','lothar'}"
name="leftList"
addToLeftLabel="向左移动"
addToRightLabel="向右移动"
addAllToLeftLabel="left"
addAllToRightLabel="right"
doubleName="rightList"
doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: TDefinGuide'}"
/>
<s:submit value="login"/>
</s:form>
<s:form action="TestTagLib">
<s:optiontransferselect
label="optiontransferselect Test"
labelposition="top"
list="{'thomas1','ada','lothar'}"
name="leftList"
addToLeftLabel="向左移动"
addToRightLabel="向右移动"
addAllToLeftLabel="left"
addAllToRightLabel="right"
doubleName="rightList"
doubleList="{'Expert One-on-One J2EE Design and Development', 'JavaScript: TDefinGuide'}"
/>
<s:submit value="login"/>
</s:form>
然后提交到TestTagLibAction中,在action中设置了setter(),getter()方法,关键代码如下:
private List leftList;
private List rightList;
public List getLeftList() {
return leftList;
}
public void setLeftList(List leftList) {
this.leftList = leftList;
}
public List getRightList() {
return rightList;
}
public void setRightList(List rightList) {
this.rightList = rightList;
}
为什么在execute()方法中得不到 rightList的值? 其中rightList对应前面jsp页面中 <s:optiontransferselect/>的doublename="rightList"标签,代码如下:
List list1=getRightList();
for(int i=0;i <list1.size();i++){
System.out.println(list1.get(i).toString());
}
借用下此问题的回答:
后台action里面添加属性(setXXX和getXXX方法):
private String[] leftList;
private String[] rightList;
在前台页面上,当提交表单时,onclick事件调用下面的js:
<script type="text/javascript">
function myself(){
var right=document.forms[0].rightList;
for(i=1; i <right.length; i++)
right[i].selected = true;
}
</script>
提交后,就能在后台得到rightList里面的值了。
如果没有这段Js代码,后台是得不到值的,这是Struts2 <s:optiontransferselect/>本身的bug.
呵呵,首先感谢这位兄弟的回答,这样做应该是可以的(ps:我没有测试)
但这不是struts2的bug
问题出在html中的代码上
用firebug监控表单的提交的时候,会获取到一个dojo错误,其实问题很简单:
缺失
<s:head/>
这个标签
因在struts2中集成了dojo,所以不导入dojo肯定会出现问题了
呵呵,就这么简单.
非常感谢上面引述的那位兄弟的回答
以上问题的来源地:http://topic.csdn.net/u/20080127/15/4539cf2e-7309-4de8-9289-fa0fe02496b5.html
分享到:
相关推荐
7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax B: 1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值 C: 1. <s:checkbox></s:checkbox>---...
- `<s:form>` 标签是创建表单的基础,其常用属性包括`action`、`method`、`enctype`等。 - 示例: ```xml <s:form action="exampleSubmit" method="post" enctype="multipart/form-data"> <s:submit/> <s:...
* <s:autocompleter>:自动完成 <s:combobox> 标签的内容,这个是 AJAX 实现的 B: * <s:bean>:类似于 Struts1.x 中的 JavaBean 的值 C: * <s:checkbox>:复选框 * <s:checkboxlist>:多选框 * <s:combobox>:...
而在 Struts2 中,所有的标签都被统一管理,并通过在 JSP 文件头部声明 `<%@ taglib prefix="s" uri="/struts-tags" %>` 来启用 Struts2 的标签库。这种方式简化了开发过程中的配置工作,使得开发者可以更加专注于...
在JSP中,我们通常使用`<%@ taglib prefix="s" uri="/struts-tags" %>`来引入Struts2的标签库。下面将详细介绍一些重要的Struts2标签及其功能。 **A. 超链接和Action标签** - `<s:a href=""></s:a>`:创建一个...
`<s:token>` 用于防止重复提交,`<s:tree>` 创建树形结构,`<s:treenode>` 定义树节点,`<s:updownselect>` 创建可上下选择的多选框,`<s:url>` 生成URL,通常与Action关联。 以上就是Struts标签的基本介绍,它们极...
2. `<s:action name=""></s:action>`:执行一个视图中的Action,通常用于导航和请求转发。 3. `<s:actionerror/>`:如果Action中的全局错误有值,则显示这些错误信息。 4. `<s:actionmessage/>`:如果Action中的全局...
`<s:action>` - 动作标签 该标签用于执行一个Action,并跳转到指定的结果视图。 ```jsp <s:action name="myAction"> <!-- 可以包含其他表单元素 --> </s:action> ``` ##### 3. `<s:actionerror>` - 显示动作错误...
`<s:action>`标签则是用来执行视图中的一个Action,通常用于页面间的跳转和业务逻辑的触发。 B. `<s:bean>`: 此标签类似于Struts1中的JavaBean引用,用于在JSP页面中引用JavaBean的属性。 C. `<s:checkbox>` 和 `...
本文将详细介绍Struts2中常用的标签及其用法,帮助开发者更好地理解和运用这些标签。 #### 二、标签详解 ##### 1. `<s:a href="">` —— 超链接 - **功能**:类似于HTML中的`<a>`标签,用于创建超链接。 - **示例*...
`<s:form>` 标签用于创建表单,可以指定Action、Method等属性,是Struts2中最常用的标签之一。 ```xml <s:form action="saveData"> <!-- 表单内容 --> </s:form> ``` ### 17. `<s:generator>` 标签 `<s:...
2. `<s:action name="">` - 执行视图中的一个Action,可以直接在页面上调用Action方法。 3. `<s:actionerror/>` - 如果Action中存在错误信息,会将其显示出来。 4. `<s:actionmessage/>` - 显示Action的提示信息,...
在Struts2中,不再像Struts1.x那样将标签库分为html、bean、logic和tiles等类别,而是统一使用一个`<s>`前缀的标签库,只需在JSP页面头部引入`<%@ taglib prefix="s" uri="/struts-tags" %>`即可使用所有标签。...
- **用途**:相当于 Struts1.x 中的 `<bean>` 标签,用于创建 JavaBean 实例。 - **示例**: ```xml <s:bean name="myBean" id="beanInstance" class="com.example.MyBean"/> ``` ##### 8. `<s:checkbox>` 标签 ...
### Struts2中的S标签详解 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2提供了丰富的标签库,其中“S标签”...
在Struts2中,`s:optiontransferselect`是一个特殊的标签,用于创建具有双向选择功能的下拉列表,即“左列表”和“右列表”,用户可以在这两个列表之间转移选项,常用于多选场景。 **1. `s:optiontransferselect` ...
Struts2标签库是Struts2框架的一部分,它提供了一系列JSP标签,使得开发者能更方便地在页面中处理Action的属性和业务逻辑。这些标签简化了页面编码,提高了代码的可读性和可维护性。以下是对每个标签的详细解释: A...
- `<s:push>`: 将值压入栈中,便于`<s:property>`标签访问。 - `<s:radio list="">`: 创建单选按钮,列表来源于一个集合。 - `<s:reset>`: 创建一个重置按钮,用于清空表单数据。 - `<s:select list="">`: 创建一个...
2. **<s:action> 执行Action** - **用途**:执行视图中的一个Action。 - **示例**: ```xml <s:action name="exampleAction" /> ``` 3. **<s:actionerror> 显示Action错误** - **用途**:如果Action的`errors...