当用户在前一个select元素中做出选择时,我会动态地将选项添加到select元素中。我在JSP页面中使用struts-html tag
。谁能建议怎么做?
让我更具体一点,我需要使用Javascript填充struts2 tag(s:select list)
。
我有三个依赖的动态下拉列表,所有这些都是从数据库填充所以我使用Ajax + jquery + Struts2通过操作调用查询到数据库并将列表传递给javacript(Ajax + json)并在javascript am设置s:select标签的list属性为json
这就是我的想法,请告诉我,如果错了或者有更好的方法可以做到这一点
答案 0 :(得分:0)
一个明确的选择是使用Struts2 Doubleselect。你需要做一些像
这样的事情<s:doubleselect label="doubleselect test1" name="menu" list="{'fruit','other'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />
<s:doubleselect label="doubleselect test2" name="menu" list="#{'fruit':'Nice Fruits', 'other':'Other Dishes'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />
您可以在此处找到更多示例
如果您不想使用双重选择,您可以在Jquery的帮助下使用简单的S2选择标记,我不确定您想要获取第二个下拉列表的值,如果这是来自动作类更好地使用Struts2-JSON插件,它将帮助您将数据作为JSON发送回UI,并且您始终可以使用Jquery的JSON解析功能来解析JSON并填充下拉列表,如
var formInput='state='+statedata;
$.getJSON('search/fillDropDown',formInput,function(data) {
$("#district option:first").val("-1").text("Please select a district");
$('.result').html('' + data.districts + '');
$.each(data.districts,function(index, value){
var districtid = document.getElementById("district");
var option=new Option(value,value);
try{
districtid.add(option);
}
catch(e){
districtid.appendChild(option);
});
});
在上面,我将根据第一个下拉列表中选择的值填充另一个下拉列表,并使用JSON插件将操作中的列表作为JSON数据发回。