Заполните JSP, выпадающий с информацией о базе данных

Я пытаюсь заполнить JSP, выпадающий от таблицы базы данных.

Вот код, который создаст массив и заполнит его информацией о базе данных:

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

Как я называю тот класс от своего JSP и заполняю выпадающее?

9
задан Matt Fenwick 16 March 2012 в 13:41
поделиться

2 ответа

Я бы посоветовал попытаться не смешивать дисплей и код модели. Сохраните весь свой HTML-код на странице jsp и создайте объекты поддержки модели, которые предоставляют необходимую информацию. Например, предположим, что у вас есть простой класс Java, который имеет список объектов:

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

Не имеет значения, как метод getItems создает список, который он возвращает. Чтобы отобразить эти элементы на странице JSP с помощью JSTL, вы должны сделать следующее:

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

Вместо использования useBean коллекция элементов, используемая в цикле forEach, также может поступать из сеанса или объекта запроса.

Эта ссылка также содержит полезный совет: http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/

11
ответ дан 4 December 2019 в 15:12
поделиться

Во-первых, в вашем JSP импортируйте класс, который вы пытаетесь использовать:

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

Затем вы можете использовать этот класс, как вы обычно делаете:

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

Чтобы заполнить элемент управления, вы итерируете ваш массив и устанавливаете аргумент value тега option:

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

Как вы можете видеть, здесь смешанный код Java и HTML. Сначала выводится тег select, затем в коде Java есть цикл while, итерирующий список объектов. Это может быть ваш ResultSet, массив или какая-то другая коллекция. Для каждой итерации создается тег опции с некоторым значением, это будет значение, которое вы хотите, чтобы пользователь увидел.

Это основной подход, использующий только JSP. Но есть много библиотек тегов, например, JSTL, которые предоставляют такие вещи, как итерация, так что вы можете написать что-то вроде:

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

2
ответ дан 4 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: