0

当用户在前一个选择元素中做出选择时,我会动态地将选项添加到选择元素中。我struts-html tag在 JSP 页面内使用。谁能建议如何做到这一点?

让我更具体地说,我需要struts2 tag(s:select list)使用 Javascript 填充。

我有三个相关的动态下拉列表,它们都是从数据库中填充的,所以我通过操作使用 Ajax+jquery+Struts2 将查询调用到数据库并通过(Ajax+json)将列表传递给 javacript 并在 javascript 中设置列​​表属性的 s:select 标记到 json

这就是我的想法,如果我错了,或者有更好的方法可以做到这一点,请告诉我

4

1 回答 1

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 数据发送回。

于 2012-08-21T10:09:40.730 回答