2010-05-25 39 views
9

Estoy intentando completar un menú desplegable JSP desde una tabla de base de datos.Completar el menú desplegable JSP con la información de la base de datos

Aquí está el código que va a crear la matriz y llenarlo con la información de la base de datos:

// this will create my array 
public static ArrayList<DropDownBrands> getBrandsMakes() { 
    ArrayList<DropDownBrands> arrayBrandsMake = new ArrayList<DropDownBrands>(); 
    while (rs.next()) {  
     arrayBrandsMake.add(loadOB(rs)); 
    } 
    return arrayBrandsMake; 
} 

// this will load my array object 
private static DropDownBrands loadOB(ResultSet rs) throws SQLException { 
    DropDownBrands OB = new DropDownBrands(); 
    OB.setBrands("BRAN"); 
    return OB; 
} 

Como llamar en esa clase de mi JSP y poblar el menú desplegable?

Respuesta

10

Yo sugeriría tratando de mantenerse alejado de mezclar el código de visualización y modelo. Mantenga todo su html en la página jsp y cree objetos modelo de respaldo que brinden la información que necesita. Por ejemplo, digamos que usted tiene una clase Java simple que tiene una lista de objetos:

package com.example; 

import java.util.ArrayList; 
import java.util.List; 

public class ListBean { 

    public List<String> getItems() { 
     List<String> list = new ArrayList<String>(); 
     list.add("Thing1"); 
     list.add("Thing2"); 
     list.add("Thing3"); 
     return list; 
    } 
} 

No importa cómo el método getItems construye la lista que está regresando. Para mostrar estos elementos en la página JSP utilizando JSTL que haría lo siguiente:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 

<jsp:useBean id="obj" class="com.example.ListBean" scope="page"/> 

<select> 
    <c:forEach var="item" items="${obj.items}"> 
    <option>${item}</option> 
    </c:forEach> 
</select> 
</body> 
</html> 

En lugar de utilizar useBean la colección de artículos utilizados en el bucle forEach también podría provenir de la sesión o de un objeto de solicitud.

Este enlace también tiene un buen consejo: http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/

+0

y cómo puedo mostrar el valor elegido por el usuario cuando el formulario se carga, permite decir que el usuario la opción 2 elegir, y buscar un registro, cómo cuando cargué hago para mostrar la opción seleccionada por el usuario, sé cómo hacer esto cuando el valor está codificado en el valor desplegable. – Cano63

+0

Simplemente compare con el elemento actual dentro del bucle e imprima 'seleccionado' en consecuencia? – BalusC

+0

Esto es lo que hago cuando la opción desplegable está codificada, cómo va a ser con la opción de base de datos Cano63

2

En primer lugar, en su importación JSP la clase que usted está tratando de utilizar:

<%@ page import="com.mypackage.MyClass" %> 

continuación, puede utilizar esa clase como normalmente haría:

<% 
    MyClass c = new MyClass(); 
    c.getSomeProperty(); 
%> 

Para llenar el control, itere su matriz y establezca el argumento de valor de la etiqueta de opción:

<select> 
    <%while (myList.next()){%> 
     <option><%out.print(c.getName());%></option> 
    <%}%> 
</select> 

Como puede ver, existe un código Java mixto y HTML. Primero, emite la etiqueta de selección, luego, en el código de Java, hay un ciclo while que itera una lista de objetos. Esta podría ser su ResultSet, una matriz o alguna otra colección. Para cada iteración crea una etiqueta de opción con algún valor, este sería el valor que desea que el usuario vea.

Este es el enfoque básico, utilizando solo JSP. Pero hay muchas librerías de etiquetas JSTL, por ejemplo, que proporcionan cosas como iteración para que pueda escribir cosas como:

<select name="mySelect"> 
    <foreach collection="<%= myCollection %>" var="mybean"> 
     <%= mybean.getOptionTag() %> 
    </foreach> 
</select> 

Cuestiones relacionadas