如何在jsp页面中显示所选数据

时间:2010-08-15 09:57:42

标签: java javascript jsp jstl

我的要求在下面解释,

我在“DAO”类中使用了Arraylist,其中包含n个客户名称。我在“域对象”中设置了ArrayList,并在jsp页面中使用该“域对象”来显示客户名称。

我在jsp页面中使用会话范围,如下所示,

<c:set var="listCustomer" value="${ItemDataResponse.dataItemsList[0].listCustomers}" 
scope="session"/>
<c:set var="CustomerData" value="${ItemDataResponse.dataItemsList[1]}" scope="session"/>


  <div  id="my_jpmorgan">

    <table border="0" width="100%" bgcolor="">
       <tr valign="top" class="lnav">
         <td width=100%">
            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="paddingLeft" bgcolor="">
         <tr>
             <td>
                  <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="">
                    <tr>
                       <td valign="top" height="1px" align="left">
                             <span class="pageHeading_DarkBlue">
                                <c:out value="${CustomerData.customerName[0]}"/>
                             </span>
            </td>

          </tr>
         <tr>
          <td align="right"> 
            <select name="singleSelect" onchange="javascript:onchangeFun(this);"> 
              <c:forEach var="Customer" items="${listCustomer}" >
                  <option value=""> <c:out value="${Customer}" /></option>
               </c:forEach>
             </select>      
           </td>
         </tr>
       </td>
     </tr>
 </table>
</div>

每次第一次记录应用程序时,ArrayList中的第一个客户名称应显示在jsp页面的顶部。然后在加载jsp页面后

当我从下拉菜单中点击任何客户名称时,我必须在jsp页面顶部显示客户名称(即..如果我在选择xxx客户名称的下拉菜单中单击xxx客户应该显示在jsp页面的顶部)。

当我从下拉菜单中选择客户名称时,我能够显示其中包含所有cusotmers名称的下拉菜单(名称来自ArrayList)但是无法在jsp页面顶部显示客户名称。

如有必要,请修改我的粘贴代码。如果可能的话,还给我发一些示例代码

注意:我使用的是JSTL标签(我的要求是这样)。

在上面的jsp代码中

                     <c:out value="${CustomerData.customerName[0]}"/>
当我从下拉菜单中选择时,

行应该在jsp页面顶部显示客户名称(当前不能正常工作)和   下面的行显示下拉窗口,客户名称来自ArrayList(工作正常)

  <select name="singleSelect" onchange="javascript:onchangeFun(this);"> 
    <c:forEach var="Customer" items="${listCustomer}" >
         <option value=""> <c:out value="${Customer}" /></option>
               </c:forEach>
             </select> 

1 个答案:

答案 0 :(得分:2)

看起来您的问题是不了解HTML表单和JavaScript的工作方式。

有两种方法:

  1. 使用下拉列表将表单提交到服务器端。所选客户将被设置为请求参数,名称为singleSelect(下拉列表名称)。

    <form>
        <select name="singleSelect" onchange="this.form.submit()">
            ...
    

    并相应地显示所选客户:

    <c:out value="${param.singleSelect}" />
    
  2. 使用JavaScript获取所选客户,并将其设置在您希望显示客户名称的HTML元素中。

    <select name="singleSelect" onchange="showSelectedCustomer(this)">
    

    使用这个JS函数

    function showSelectedCustomer(dropdown) {
        var selectedCustomer = dropdown.options[dropdown.selectedIndex].value;
        var currentCustomer = document.getElementById('currentCustomer');
        currentCustomer.firstChild.nodeValue = selectedCustomer;
    }
    

    和此占位符,您希望在以下位置显示所选客户:

    <span id="currentCustomer"></span>
    
  3. 另见: