使用JSTL

时间:2016-07-13 09:29:08

标签: javascript jsp jstl

我是JSTL的初学者,因为我最近才开始使用它来避免在我的JSP中使用scriplet,我想要求我帮忙解决一些问题。

我有一个select元素,我已经设法使用JSTL填充了一个arraylist。但是,每当选择下拉列表中的不同选项时,我还需要动态更改只读文本字段的值,并且放在文本字段中的值与选定选项在arraylist中的索引相同,并且&# 39;我遇到麻烦的地方。

<select id="department" onchange="managerfill()">
<c:forEach var="dept" items="${departments}">
<option value="${dept.deptname}"><c:out value="${dept.deptname}"/></option>
</c:forEach>
</select>

<input type="text" id="manager" readonly>

我尝试使用js函数来更改文本字段的值,但到目前为止,我还没有运气让它发挥作用。

function managerfill() {
var x = document.getElementById("department").selectedIndex;
document.getElementById("manager").value="${departments[x].manager}";
}

如果部门和经理字段都是下拉列表,那会更容易,但我们需要让经理成为一个文本字段,所以我有点不知所措,试图解决它。

1 个答案:

答案 0 :(得分:2)

您无法在呈现的网页上使用jstl语言。 jstl仅限服务器端,不能在最终用户浏览器上使用。

您需要使用js来更改它。

你写的函数很好地期望jstl语法不能再被解释了。

function managerfill() {
  var select = document.getElementById("department");
  var x = select.selectedIndex;
  document.getElementById("manager").value = select.options[x].text;
}

这样的事情应该有效。

但我认为您要打印的文本是服务器端,因此您可以在某些html / tag或隐藏选择中打印它并从中获取结果。 替换select.options[x].text

<select id="departments-manager" class="hidden">
  <c:forEach var="dept" items="${departments}">
    <option value="${dept.manager}"><c:out value="${dept.manager}"/></option>
  </c:forEach>
</select>


function managerfill() {
  var select = document.getElementById("department");
  var selectManager = document.getElementById("departments-manager");
  var x = select.selectedIndex;
  document.getElementById("manager").value = selectManager.options[x].text;
}