添加年级Grade,类中有String name和Set<Subject> subjects两个属性,科目Subject中有id,name属性,在添加年级Grade的时候有一个文本填写年级名称,一个<s:optiontransferselect>从系统中选择科目添加到Grade的Set<Subject> subjects中去。
代码如下,问题是:
1.如何在<s:optiontransferselect>中显示科目的名称(我这里显示的是com.test.bean.Subject@d9a773之类的)?
2.如何将选择的科目封装到Set<Subject> subjects中去?

<h2 align="center">添加年级</h2>
<s:form action="addGradeAction">
<s:textfield name="grade.name" label="年级名称" />
<s:optiontransferselect label="选择科目"
    name="leftList"
list="#request.subjectList"

multiple="true" 
headerKey="headerKey"
headerValue="---系统科目---" 
emptyOption="true" 
doubleList="{}"
doubleName="rightList" 
doubleHeaderKey="doubleHeaderKey"
doubleHeaderValue="---已选科目---" 
doubleEmptyOption="true"
doubleMultiple="true" 
addAllToLeftLabel=" 全左 "
addAllToRightLabel=" 全右 " 
addToRightLabel=" 向右 "
addToLeftLabel=" 向左 " 
allowUpDownOnLeft="false"
allowUpDownOnRight="false" 
allowSelectAll="false"
 />
 
<s:submit value="确定" onclick="myself();" />
</s:form>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>struts2optiontransferselect复选框传对象

解决方案 »

  1.   

    对于第一个问题加上 listValue="name"应该就行了
      

  2.   

    对于第二个问题:
    1,在标签中加入listKey="id",表示传到Action中的是subject的id的值
    2,在action中应该有一个private Integer[] rightList;并有对应的setter/getter方法
       这样,通过rightList就可以查出对应的subject啦,封装就不是问题了
      

  3.   

    用标签的话直接写:
    <s:select list="#request.subjectList" name="leftList" listKey="id" listValue="classname" ></s:select>
    这样就可以啊