我创建并传递给我的jsp的数组列表是
ArrayList countryList = new ArrayList();
countryList.add(new CountryData("1", "USA"));
countryList.add(new CountryData("2", "Canada"));
countryList.add(new CountryData("3", "Mexico"));
countryList.add(new CountryData("4", "Canada"));
在jsp页面上我正在使用
显示<html:select property="country" >
<html:option value="0">Select Country</html:option>
<html:optionsCollection name="InputForm" property="countryList"
label="countryName" value="countryId" />
</html:select>
是否可以过滤jsp上的列表以仅在下拉列表中显示加拿大
答案 0 :(得分:0)
最简单的方法是将CountryData列表序列化为JSON(使用众多免费的Java JSON库之一),并使用JavaScript过滤国家/地区阵列。
在Java中:
String countryListAsJSON = serialize(countryList);
request.setAttribute("countries", countryListAsJSON);
在JSP中:
<script>
var countries = ${countries};
//...
</script>
将转换为以下HTML代码:
<script>
var countries = [{"countryId": "1", "countryName": "USA"}, {"countryId": "2", "countryName": "Canada"}, ...];
//...
</script>
答案 1 :(得分:0)
是的,这是可能的,有几种方法可以做到:
使用scriptlet: (假设所有必需的包含指令都已完成)
<%= List<CountryData> newList = new ArrayList<CountryData>(); %>
<html:select property="country" >
<html:option value="0">Select Country</html:option>
<%
for(CountryData cd:countryList) {
if("Canada".equals(cd.getCountry())) {
newList.add(cd);
}
}
%>
<html:optionsCollection name="InputForm" property="newList" label="countryName" value="countryId" />
</html:select>
使用JSTL c:forEach
或c:if
标记过滤掉列表中所有不需要的元素
使用专门开发的自定义标记过滤掉列表中除“加拿大”以外的所有国家/地区