0

我将 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 - 我必须检查)。我只是无法从覆盖列表的特定元素中获得限制值,我无法弄清楚我做错了什么。这可能很简单。

提前致谢。

4

1 回答 1

0

您尝试index在服务器端解析表达式中使用客户端运行时 JavaScript 变量。

我想你会得到 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;
}
于 2013-04-10T19:32:36.680 回答