使用jQuery迭代java集合

时间:2010-07-05 12:41:05

标签: java jquery jsp

我从这个对象开始,

public class myTO {

    private String id;
    private String name;
    }

在此对象中使用

public myCombiTO {
    private myTO myTO;

    private List<String> valueList;
    private List<String> displayList;
}

我创建了这些对象的列表

List<myCombiTO> myCombiTOList = getMyCombiTOList();

我使用此列表设置jsp页面属性

request.setAttribute("myAttrList", myCombiTOList);

转发到jsp页面。然后我使用jquery和jstl来填充此列表中的下拉列表

<select name="mYSelect" id="mySelect">
     <c:forEach var="myVar" items="${myAttrList}">
          <option value="${myVar.myTO.id}" >
               <c:out value="${myVar.myTO.name}" />
          </option>
    </c:forEach>    
</select>

我的问题是我想使用jquery使用mycombiTO.getValueList()中的值填充第二个下拉列表。到目前为止我有这个

$("#mySelect").change(function(){
        var myJSList = ${myAttrList};
        var chosenGroup = $("#mySelect").val();
        var valueArray = myJSList.get(chosenGroup).valueList;
        var displayArray = myJSList.get(chosenGroup).displayList;
        var items = {'display':[displayArray], 'value':[valueArray]};

        //now populate drop downs

        $.populateSelect($('#myselect').get(0), items);

    });

jQuery.populateSelect = function(element,items) {
    $.each(items, function() {
            element.options[element.options.length]  = new Option(this.display,this.value);
          });
};

然而它不起作用请帮助。我在基于两个数组创建javascript对象时遇到问题。理想情况下,我想使用键/值对从jquery引用java映射。这可能吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

现在你传入items这是一个只有两个键/值对的对象,所以$.each()只运行了两次迭代。对于那些迭代,this.displaythis.value指的是整个数组。

一种选择是简单地将displayArrayvalueArray传递给populateSelect(),并迭代这些:

jQuery.populateSelect = function(element,displayArray,valueArray) {
    $.each(displayArray, function(i,val) {
        element.options[element.options.length]  = new Option( displayArray[i] ,valueArray[i] );
    });
};

回到原始代码,你也可以这样做:

jQuery.populateSelect = function(element,items) {
    $.each(items.display, function(i,val) {
        element.options[element.options.length]  = new Option( items.display[i] ,items.value[i] );
    });
};

答案 1 :(得分:1)

我认为你的java代码应该提供你对象的json版本。然后,您可以在jsp中插入整个myCombiTOList,或者在更改函数中获取带有ajax请求的单个myCombiTO对象。