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 wil
First, in your JSP import the class you are trying to use:
<%@ page import="com.mypackage.MyClass" %>
Then you can use that class as you would normally do:
<%
MyClass c = new MyClass();
c.getSomeProperty();
%>
To fill the control, you iterate your array and set the value argument of the option tag:
<select>
<%while (myList.next()){%>
<option><%out.print(c.getName());%></option>
<%}%>
</select>
As you can see, there's mixed Java code and HTML. First it outputs the select tag, then on Java code there's a while loop iterating a list of objects. This could be your ResultSet
, an array or some other collection. For each iteration it creates an option tag with some value, this would be the value you want the user to see.
This is the basic approach, using only JSP. But there are many tag libraries, for example JSTL, that provide things like iteration so you can write things like:
<select name="mySelect">
<foreach collection="<%= myCollection %>" var="mybean">
<%= mybean.getOptionTag() %>
</foreach>
</select>
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/