java - 我在 jsp 页面上检索下拉选项的数组值时遇到问题

标签 java jsp model-view-controller foreach

我必须从不同的不同表中获取值,并且值不止一个,并且不同不同下拉框中的所有值都必须在框的基础上显示,我已经这样做了,不确定我的方法是否正确或不是,但我获得了值(value),但最终当我尝试选择值时发生了什么,它即将到来,但像这样 [saurabh,prakash,karan] 并在带有数组符号的一行中,但我想要 saurabh 和下一行 prakash,所以这是我的问题,这里是我调用 empDetail 方法的 servlet 类

 @WebServlet(name = "EmployeeMapping", urlPatterns = {"/EmployeeMapping"})
 public class EmployeeMapping extends HttpServlet {
 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
  HttpSession session = request.getSession(true);     
  Employee emp1 = (Employee)session.getAttribute("emp1");
  EmployeeBean eb = new EmployeeBean();
  List<Employee> leave1 = eb.empDetail(emp1); 
  if(emp1.isValid())
  {
    request.setAttribute("leave1",leave1);
    response.sendRedirect("AssignProject.jsp");
  }}
   @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
  processRequest(request, response);
   }
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
  processRequest(request, response);
     }
  @Override
  public String getServletInfo() {
  return "Short description";}}

这是我的方法

  public List<Employee> empDetail(Employee emp1) {
  List<Employee> leave1 = new ArrayList<Employee>();
  List<String> myList1 = new ArrayList<String>();
  List<String> myList2 = new ArrayList<String>();
  List<String> myList3 = new ArrayList<String>();
  List<String> myList4 = new ArrayList<String>();
  try{
  con = ConnectionManager.getConnection();
  stmt1 = con.createStatement();
  String Query11 = "SELECT projectname FROM addproject";
  System.out.println("Query1 is" +Query11);
  rs1 = stmt1.executeQuery(Query11);
  while(rs1.next())
  {
  String z =(rs1.getString("projectname"));
  System.out.println("...11." +z);
  myList1.add(z);
  }
   emp1.setPrjname(myList1);
   stmt2 = con.createStatement();
  String Query12 = "select empName from empinfo where access_type ='teamleader'";
  System.out.println("Query1 is" +Query12);
  rs2 = stmt2.executeQuery(Query12);
  while(rs2.next())
  {
String p = rs2.getString("empName");
System.out.println("...11." +p);
myList2.add(p);
  }
  emp1.setTlname(myList2);
  stmt3 = con.createStatement();
  String Query13 = "select empName from empinfo where access_type ='manager'";
  System.out.println("Query1 is" +Query13);
  rs3 = stmt3.executeQuery(Query13);
  while(rs3.next())
  {
  String q = rs3.getString("empName");
  System.out.println("...11." +q);
  myList3.add(q);
  }     
  emp1.setManname(myList3);
  stmt4 = con.createStatement();
   String Query14 = "select empName from empinfo where access_type ='employee'";
   System.out.println("Query1 is" +Query14);
   rs4 = stmt4.executeQuery(Query14);
   while(rs4.next())
  {
  String r = rs4.getString("empName");
  System.out.println("...11." +r);
  myList4.add(r);
  }
   emp1.setEmpname(myList4);
   leave1.add(emp1);
   emp1.setValid(true);
  }
  catch (SQLException  ex) {
  } finally {
      try {
          if (pstmt != null) {
              pstmt.close();
          }
          if (con != null) {
              con.close();
          }
      } catch (SQLException ex) {
          Logger.getLogger(EmployeeBean.class.getName()).log(Level.SEVERE, null, ex);
      }
    }
    return leave1;
    };

这是我的jsp页面,其中我得到了像[saurabh, prakash, karan]这样的值,但是如果我给出${emp1.prjname}这个${emp1.prjname[0]}的insted,那么我得到的是saurabh所以明智地,我在这里面临着困难,不能用这个循环,所以请任何人帮助我..

 <%if(session.getAttribute("emp1")==null)
 {
 String message ="please login first";
 request.setAttribute("message", message);
  request.getRequestDispatcher("index.jsp").forward(request, response);
 }
 %>
   <title>RESOURCE MANAGEMENT SYSTEM</title>
 <head
 </head><body>
 <%
 Employee emp1 = (Employee)session.getAttribute("emp1");
 session.setAttribute("emp1",emp1);
 %>
 <tr>
        <td >select project name </td>
         <td>   <select name="pname">    
      <option value="${emp1.prjnamename}">${emp1.prjnamename}</option></select></td>
      </tr>
         <tr>
      <td >manager </td>
         <td>   <select name="manager">
      <option value="${emp1.manname}">${emp1.manname}</option></select></td>
            </tr>
         <tr>
               <td >team leader</td>
         <td>   <select name="teamleader">
      <option value="emp1.Tlname()">emp1.Tlname()</option></select></td>
            </tr>
    <tr>
                <td> <section class="container">
    <div>
    <select id="leftValues" size="5" multiple>
   <option value="${emp1.empname}">${emp1.empname}</option>                  
  </select>
  </div>
  </td>
  <td>
  <div>
    <input type="button" id="btnLeft" value="&lt;&lt;" />
    <input type="button" id="btnRight" value="&gt;&gt;" />
  </div>
 </td>
  <td>
 <div>
    <select name="nameofemps" id="rightValues" size="4" multiple="multiple">
        <option>
        </option>
    </select>
    <div>
        <input type="text" id="txtRight" />
    </div>
  </div>
 </section>
 </td>
   </tr>            
        </table><BR>
        </fieldset>
  </body>
   </html>

最佳答案

您需要使用 request 属性迭代 forEach 循环,

  <select id="leftValues" size="5" multiple>
  <c:forEach var='temp' items='${leave1}' >
    <option value="${temp.empname}">${temp.empname}</option>    
  </c:forEach>              
  </select>

此外,您正在此处创建一个新请求,

  if(emp1.isValid())
  {
    request.setAttribute("leave1",leave1);
    response.sendRedirect("AssignProject.jsp");
  }}

相同的请求应该转发到jsp。使用 RequestDispatcher 代替

我假设您正在尝试打印请求中的leave1,如果您的观点不同,请在我的答案下方评论

关于java - 我在 jsp 页面上检索下拉选项的数组值时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923974/

相关文章:

java - 解决 SonarQube 中的问题不会影响 SonarLint 报告的警告

java - 尽管高度和宽度为 wrap_content,但 imageview 中显示的图像在 android 中太小

java - NoSuchMethodError : freemarker. 模板.配置

java - 访问导入的js文件中的Spring MVC模型数据

java - GWT/JSP-如何运行jsp

php - 有没有我可以用来表示实例化后添加的魔术方法属性的 PHP DocBlock?

java - 单例类中私有(private)静态变量和私有(private)实例变量有什么区别?

jsp - 使用 Maven 配置文件在缩小/未压缩的 JS 之间切换?

java - 使用 Maven 构建 Spring Boot 项目

java - Spring MVC - 使用 @ExceptionHandler 处理异常不会呈现新 View