我有一个下拉列表和一个带有几个文本框的表单。我想在下拉列表中填写此表单以及所选项目的详细信息。
我在java MVC应用程序(或想要的)中这样做,我在我的jsp页面中有这样的事情:
<select name="item">
<c:forEach items="${persons}" var="selectedPerson">
<c:set var="person" value="${selectedPerson}" />
<option value="$selectedPerson.id">${selectedPerson.LastName}</option>
</c:forEach>
</select>
Persons是Person类的列表。
我想知道是否可以直接使用变量'person'填写表单,例如:
<textarea name="name" rows="1" cols="34" >
${selectedPerson.Name}
</textarea>
以便在更改selectedPerson时更新表单的其余部分?
我知道如何在c#中执行此操作,但我没有使用Java技术的经验。
是否有必要将表单提交给servlet来执行此操作,或者可以在客户端上完成,因为从填充下拉列表的那一刻起,我将所有数据都放在人员列表中?
答案 0 :(得分:0)
$ {}语法是JSP语法,它只会在服务器上解析并运行一次以生成HTML,然后以HTML格式发送。然后,选择列表的更改只发生在客户端浏览器中:服务器对它们一无所知。
您要做的是在选择框中注册javascript侦听器。您应该考虑使用理想的库来帮助您这样做。 JQuery是一个非常受欢迎的解决方案,如果您要进行此类开发,则值得一读。
如果您最终使用JQuery,则需要执行以下操作
<select id="item" name="item">
<c:forEach items="${persons}" var="selectedPerson">
<c:set var="person" value="${selectedPerson}" />
<option value="$selectedPerson.id">${selectedPerson.LastName}</option>
</c:forEach>
</select>
<input name="lastName" id="lastName" type="text"/>
<script type="text/javascript">
$(function() {
$("#item").change(function() {
$("#lastName").val($("option:selected", this).text());
});
});
</script>
一旦您阅读了基本的JQuery教程,这将更有意义,但基本上它的作用是每次选择列表更改值时,它会获取所选选项并将其内容设置为lastName输入字段。希望这会有所帮助。