好吧,也许有人能帮助我解决我正在尝试解决的问题。实际上,我有一个JSP页面,它获得了一个Country对象列表(来自Spring Portlet SimpleFormController的referenceData()方法,不完全相关,只是在可能的情况下提及)。每个Country对象都有一组省对象,每个省和国家都有一个名称字段:
public class Country {
private String name;
private Set<Province> provinces;
//Getters and setters
}
public class Province {
private String name;
//Getters and setters
}
现在,我在JSP中有两个下拉菜单,分别对应国家和省份,我想按国家筛选省份。
现在我需要一个动态的方法来从我的内容创建JavaScript数组。在任何人提到 AJAX 之前,这是不可能的,因为我们的项目使用portlet,我们希望远离使用DWR这样的框架或创建servlet。下面是我目前拥有的JavaScript/JSP,但它没有用任何东西填充数组:
var countries = new Array();
<c:forEach items="${countryList}" var="country" varStatus="status">
countries[status.index] = new Array();
countries[status.index]['country'] = ${country.name};
countries[status.index]['provinces'] =
[
<c:forEach items="${country.provinces}" var="province" varStatus="provinceStatus">
'${province.name}'
<c:if test="${!provinceStatus.last}">
,
</c:if>
</c:forEach>
];
</c:forEach>
有没有人知道在上面的例子中如何在JSP中创建一个JavaScript数组,或者在这种情况下什么是“最佳实践”?提前感谢!
4条答案
按热度按时间nkhmeac61#
现在你在javascript中看到的是这样的东西
另一个选择是让您的输出看起来像我发布的javascript。
afdcj2ne2#
您是否考虑过使用JSON?有几个库可以接受泛型集合并输出JSON for Java and other languages。
ippsafx73#
代码中的主要问题是忘记将“status.index”放在
${ }
中。也就是说,这是一个非常糟糕的方法,因为你最终会在你的页面中使用很多Javascript代码。使用Javascript对象表示法创建列表要好得多,就像@John Hartsock的第二个答案一样。
hlswsv354#