无法从列表中获取选定的值(jsp,servlet)

时间:2014-06-06 06:03:03

标签: java mysql jsp servlets

抱歉我的英文不好:) 有人能帮助我吗我创建了包含员工姓名的列表。当您点击名称时,每个员工都应该拥有自己的页面,并提供有关选择员工的信息。 形式如下:

<form name="submitForm" method="get" action="zakaz" id="form1"  class="dropdown-menu">
<%for(int i=0;i<dataList4.size();i++){%>
<input type="hidden" name="fio" value="<%=dataList4.get(i)%>">
<ul class="dropdown-menu" style="width:500px;">
<li><a href=# onclick="document.forms['form1'].submit();return false;"><%=dataList4.get(i)%></a></li>
</ul>
  <%}%>
 </form>

这是servlet:

String fio = request.getParameter("fio");
   String query = "select * from culture where name like'"+fio+"'";
   try{
            try (Statement s = con.createStatement()) {
                s.executeQuery(query);
                rs = s.getResultSet();

                while (rs.next()) {
                    dataList4.add(rs.getString("name"));
                    dataList4.add(rs.getString("room"));
                    dataList4.add(rs.getString("number"));
                }

                rs.close();
            }
             }catch (Exception e) {
             System.out.println("Exception is ;" + e);
        }

   request.setAttribute("dataList4",dataList4); 
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/zakaz.jsp");
dispatcher.forward(request, response); 

并转发到另一个JSP:

<body>
        <%
List booklist=new ArrayList();
booklist=(ArrayList)request.getAttribute("dataList4");
for(int i=0;i<booklist.size();i++){
 booklist.get(i);
}
%>
<ul>  
   <li>ФИО: <span><%=booklist.get(0) %></span></li>
    <li>Кабинет:<span> <%=booklist.get(1) %></span></li>
    <li>Телефон: <span><%=booklist.get(3) %></span> </li>
</ul>

从db Mysql中获取的所有数据,当我这样做时,我只获得列表中第一个员工的信息,但它并不适用于每个员工。

3 个答案:

答案 0 :(得分:3)

<form name="submitForm" method="get" action="zakaz" id="form1"  class="dropdown-menu">
 <input type="hidden" name="fio" id="fio" >
 <ul class="dropdown-menu" style="width:500px;">
  <%for(int i=0;i<dataList4.size();i++){%>       
     <li><a href="javascript:void(0)" onclick="submitForm('<%=dataList4.get(i)%>')"><%=dataList4.get(i)%></a></li>
 <%}%>
</ul>

<script>
 function submitForm(name){
  document.getElementById("fio").value = name;
  document.forms['form1'].submit();
 // return false;
}
</script>

答案 1 :(得分:0)

当你做

<input type="hidden" name="fio" value="<%=dataList4.get(i)%>">

在循环中,您将创建许多具有相同名称的行(检查HTML源代码)

使用GET并将此参数附加到url或create fio

的数组

修改

你的html看起来像

<form name="submitForm" method="get" action="zakaz" id="form1"  class="dropdown-menu">
<input type="hidden" name="fio" value="123">
<input type="hidden" name="fio" value="234">
<input type="hidden" name="fio" value="345">
<ul class="dropdown-menu" style="width:500px;">
<li><a href=# onclick="document.forms['form1'].submit();return false;">123</a></li>
<li><a href=# onclick="document.forms['form1'].submit();return false;">234</a></li>
<li><a href=# onclick="document.forms['form1'].submit();return false;">345</a></li>
</ul>

我会将其从表单POST更改为GET

<a href="myServlet?fio='<%=dataList4.get(i)%>'">123

或使用jquery / javascript获取值并代表您提交。

答案 2 :(得分:-1)

我认为你的循环应该进入<ul>标签

<form name="submitForm" method="get" action="zakaz" id="form1"  class="dropdown-menu">
<ul class="dropdown-menu" style="width:500px;">
<%for(int i=0;i<dataList4.size();i++){%>
<input type="hidden" name="fio<%=i%>" value="<%=dataList4.get(i)%>">
<li><a href=# onclick="document.forms['form1'].submit();return false;"><%=dataList4.get(i)%></a></li>
<%}%>
</ul>
 </form>

所有元素的名称也相同。所以你必须改变name="fio<%=i%>"

然后您可以通过

在servlet中访问它
String fio = request.getParameter("fio0");
String fio = request.getParameter("fio1");