JSP下拉列表 - 使用所选项目

时间:2011-03-04 00:04:35

标签: model-view-controller jsp servlets drop-down-menu jstl

我有一个下拉列表和一个带有几个文本框的表单。我想在下拉列表中填写此表单以及所选项目的详细信息。

我在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来执行此操作,或者可以在客户端上完成,因为从填充下拉列表的那一刻起,我将所有数据都放在人员列表中?

1 个答案:

答案 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输入字段。希望这会有所帮助。