【问题标题】:JSP drop down list - using selected itemJSP 下拉列表 - 使用选定项
【发布时间】:2011-07-08 11:23:43
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    ${} 语法是 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 输入字段。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多