我从这个对象开始,
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 映射。这可能吗?
提前致谢。
最佳答案
现在您正在传递 items
,这是一个只有两个键/值对的对象,因此 $.each()
仅运行两次迭代.对于这些迭代,this.display
和 this.value
引用整个数组。
一种选择是简单地将 displayArray
和 valueArray
传递给 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] );
});
};
关于java - 使用 jQuery 遍历 java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179505/