2009-05-03 7 views
0

J'ai soumis des données dans une base de données à partir d'un formulaire html. Ensuite, je dois charger une colonne de ces données dans un <select> d'un autre formulaire. Je l'ai fait mais comment vais-je augmenter le nombre d'options à mesure que le nombre d'enregistrements augmente?Comment recharger mon élément <select> à partir d'une base de données en Java

code

est la suivante:

<%@ page import="java.util.*"%> 
<%@ page import="java.lang.*"%> 

<%! 
    ArrayList al; 
    Object o[]; 
    String s[] = new String[10]; 
%> 

<jsp:useBean id="c" class="com.ebbeans.ViewBean"/> 
<jsp:setProperty name="c" property="*"/> 

<% 
    al = c.loadExistingEmpCode(); 
    o = al.toArray(); 

    for (int i = 0; i < o.length; i++) { 
     s[i] = (String) o[i]; 
    } 
%> 

    .......... 
    .......... 

     <select name="empCode" size="1" id="empCode"> 
      <option value="<%= s[0] %>" selected><%= s[0] %></option> 
      <option value="<%= s[1] %>"><%= s[1] %></option> 
      <option value="<%= s[2] %>"><%= s[2] %></option> 
      <option value="<%= s[3] %>"><%= s[3] %></option> 
      <option value="<%= s[4] %>"><%= s[4] %></option> 
     </select> 

Ici seulement 5 options seront affichés. Comment est-ce que j'augmenterais dynamiquement le nombre d'options quand les disques sont incresed?

Répondre

0

Je suis un codeur C#, mais je crois que vous voulez quelque chose comme ceci:

<%@ page import="java.util."%> 
    <%@ page import="java.lang."%> 
    <%! ArrayList al = c.loadExistingEmpCode(); 

     for(int i=0; i < ai.Count; i++) 
     { 

    %> 

    <option><%= ai[0].toString() %></option> 

    <% } %> 
2

Pour commencer, faire pas utilisation scriptlets dans JSP. Ils sont remplacés par taglibs et EL depuis une décennie. Un taglib couramment utilisé est le JSTL qui fournit l'étiquette <c:forEach> à cette fin. Avec EL, vous pouvez facilement accéder aux données back-end dans les pages JSP.

Voici un exemple de la meilleure façon de remplacer votre code.

Employé:

public class Employee { 
    private Long code; 
    private String name; 
    // +getters +setters 
} 

EmployeeServlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    List<Employee> employees = employeeDAO.list(); 
    request.setAttribute("employees", employees); 
    request.getRequestDispatcher("employees.jsp").forward(request, response); 
} 

employees.jsp:

<select name="employee"> 
    <c:forEach items="${employees}" var="employee"> 
     <option value="${employee.code}">${employee.name}</option> 
    </c:forEach> 
</select> 

Mappez le EmployeeServlet sur url-pattern de /employees/* et invoquez par http://example.com/contextroot/employees. Bonne chance et gardez votre scriptless JSP :)

Questions connexes