Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Populate JSP dropdown with database info

Tags:

java

jsp

jdbc

jstl

I'm trying to populate a JSP dropdown from a database table.

Here's the code that will create the array and fill it with the database info:

// 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;
}

How do I call that class from my JSP and populate the dropdown?

like image 744
Cano63 Avatar asked May 25 '10 00:05

Cano63


1 Answers

I would suggest trying to stay away from mixing the display and model code. Keep all of your html in the jsp page and create model backing objects that provide the information you need. For example, let's say you have a simple Java class that has a list of objects:

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;
    }
}

It doesn't matter how the getItems method constructs the list that it is returning. To display these items in the JSP Page using JSTL you would do the following:

<%@ 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>

Instead of using useBean the items collection used in the forEach loop could also come from the session or a request object.

This link also has good advice: http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/

like image 138
Casey Avatar answered Sep 28 '22 03:09

Casey