我将ArrayList设置为jsp页面的请求属性。数组列表由我的servlet填充。我使用数组列表来填充页面上正确运行的下拉列表。当用户在下拉列表中选择一个项目时,我想使用选择的索引从数组列表中相应的元素中检索一个值,并在另一个页面元素(名为"limit")中显示该值。我想我只是不能得到EL语法正确。
JSP中的下拉菜单(正确显示选项):
<span>
<select id="dropdown1" name="coveragelist" onchange="displaylimit(this)">
<option>Select coverage</option>
<c:forEach items="${coveragelist}" var="coverage">
<option value="${coverage.coverageCode}" />
<c:out value="${coverage.coverageCodeDesc}" />
</c:forEach>
</select>
</span>
JS函数:
<script>
function displaylimit(coveragedropdown)
{
var index = coveragedropdown.selectedIndex;
limit = "${requestScope.coveragelist[index].coverage.coverageLimit}";
document.getElementById("limit").innerHTML = limit;
}
</script>
数组包含Coverage对象,其属性定义为coverageCode、coverageCodeDesc和coverageLimit。
索引字段确实包含下拉菜单中所选项的正确值(尽管我可能需要从中减去1 -我必须检查)。我就是无法从保险清单的特定元素中得到限定值,我也不知道我做错了什么。可能是一些简单的东西。
您尝试在服务器端解析表达式中使用客户端运行时JavaScript变量index
。
我认为你会得到JspException只是试图服务器的<script>
片段。
coverageLimits
的JavaScript数组并将其嵌入displaylimit
函数
有一种方法:
function displaylimit(coveragedropdown)
{
var index = coveragedropdown.selectedIndex;
// Build the list on a server
// I am not a JavaScript expert, so you may need to
// do some escaping/quoting here
var coverageLimits = [
<c:forEach items="${coveragelist}" var="coverage">
${fn:escapeXml( coverage.coverageLimit )},
</c:forEach>
];
var limit = coverageLimits[index];
document.getElementById("limit").innerHTML = limit;
}