举个例子:
Data Object:
public class Book {
private int id;
private String name;
private int categoryId;
}
public class Category {
private int id;
private String name;
}
JSP:
<s:doubleselect list="categoryList" listKey="id" listValue="name"
doubleName="bookId" doubleList="bookMap.get(top.id)" doubleListKey="id" doubleListValue="name" theme="simple"/>
此处要注意的是top的用法,开始我以为top就是指代list的值,所以使用的是bookMap.get(top),但是二级下拉框一直是空白,后来我突然想到说不定top是一个Category实例呢,尝试了一下top.id,果然成功了。需要着重注意的是dobuleList的获值方法,id为List属性循环的ListKey的值。
Action:
public class DemoAction {
private Map<Integer, List<Book>> bookMap;
private List<Category> categoryList;
public String execute() throws Exception {
categoryList = new ArrayList<Cateogry>();
Category category;
category = new Category();
category.setId(1);
category.setName("Fiction");
categoryList.add(category);
category = new Category();
category.setId(2);
category.setName("Java");
categoryList.add(category);
bookMap = new HashMap<Integer, List<Book>>();
List<Book> bookList = new ArrayList<Book>();
Book book;
book = new Book();
book.setId(1);//该出的1为Category的id,根据Category的id获得对应的book
book.setName("Harry Porter");
book.setCategoryId(1);
bookList.add(book);
book = new Book();
book.setId(2);
book.setName("Nightmare");
book.setCategoryId(1);
bookList.add(book);
bookMap.put(1, bookList);
bookList = new ArrayList<Book>();
book = new Book();
book.setId(3);
book.setName("Thinking in Java");
book.setCategoryId(2);
bookList.add(book);
book = new Book();
book.setId(4);
book.setName("Head First Design Patterns");
book.setCategoryId(2);
bookList.add(book);
bookMap.put(2, bookList);
return SUCCESS;
}
// getter and setter..
}
名 字
数据类型
默 认 值
说 明
doubleCssClass
String
用来呈现第二个select元素的CSS类
doubleCssStyle
String
用来呈现第二个select元素的CSS样式
doubleDisabled
boolean
false
是否禁用第二个select元素
doubleEmptyOption
false
是否要在第二个select元素里插入一个空白选项
doubleHeaderKey
String
第二个select元素的标题的键
doubleHeaderValue
String
第二个select元素的标题的值
doubleId
String
第二个select元素的标识符
doubleList*
String
用来充当第二个select元素的选项来源的可遍历对象
doubleListKey
String
为第二个select元素提供选项值的对象属性
doubleListValue
String
为第二个select元素提供选项行标的对象属性
doubleMultiple
boolean
false
是否允许用户在第二个select元素里进行“多选多”选择
doubleName*
String
第二个select元素的名字
doubleSize
integer
在第二个select元素里需要显示的选项的个数
doubleValue
String
第二个select元素的值
emptyOption
boolean
false
是否要在第一个select元素里插入一个空白选项
formName
String
包含这个组件的表单的名字
headerKey
String
第一个select元素里的标题的键
headerValue
第一个select元素里的标题的值
list
用来充当第一个select元素的选项来源的可遍历对象
listKey
String
为第一个select元素提供选项值的对象属性
listValue
String
为第一个select元素提供选项行标的对象属性
multiple
boolean
false
是否允许用户在第一个select元素里进行“多选多”选择
size
integer
在第一个select元素里需要显示的选项的个数