检索存储为请求属性的数组元素属性的正确EL语法是什么?

时间:2013-04-04 20:54:15

标签: jsp el

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

我认为只要尝试服务<script>片段,就会得到JspException。

一种方法是在服务器上构建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;
}