3

サーブレットをコントローラーとして使用して Database.Am から値を取得し、配列リストを jsp ページに渡すことによって、ドロップ ダウン リストを動的にロードする必要があります。jspページでjstlを使用して配列リストを表示していますが、値は表示されませんでした。どんな助けでも大歓迎です。

ダオ:

//Method call to retrieve the customer names from Database        
public List<Report> getAllCustomers() {

    List<Report> customers = new ArrayList<Report>();

    Connection conn = null;

    Statement stmt = null;

    ResultSet rs = null;

    try {



        prop = PropertyFileLoaderTon.getInstance()
                .getPropertiesConfiguration(REPORTDATA_PROPERTY_FILE);

        String tableName = prop.getString(REPORTS_TABLE);

        String sql = "select  distinct CUSTOMERNAME from tableName ";


        conn = ConnectionFactory.getInstance().getConnection();


        stmt = conn.createStatement();

        rs = stmt.executeQuery(sql);

        while (rs.next()) {
            Report report = new Report();

            String customer = rs.getString("CUSTOMERNAME");

            report.setCustomerName(customer);


            customers.add(report);

        }

    } catch (Exception e) {

        e.printStackTrace();
    } finally {

        try {
            if (stmt != null) {
                stmt.close();
                stmt = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (Exception e) {
        }

    }
    return customers;
}

サーブレット:

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    GenericDao genericDao = new GenericDao();

    List<Report> customers = genericDao.getAllCustomers();

    request.setAttribute("CustomerList", customers);

    request.getRequestDispatcher("jsp/ShowReport.jsp").forward(request,
            response);

}

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
     pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
    </head>
    <body>
    <form action="/ReportData/DisplayReport" method="post">

        Please select an element: 


        <select id="selectedRecord" name="selectedRecord">

            <c:forEach var="CustomerList" items="${CustomerList}">

                <option value="${CustomerList}">${CustomerList.customerName}</option>

            </c:forEach>

        </select>

        <input type="submit" value="Submit" align="middle"> 

    </form>

</body>
</html>

豆:

公開クラス レポート {

private String customerName;

public String getCustomerName() {
    return customerName;
}

public void setCustomerName(String customerName) {
    this.customerName = customerName;
}

}

4

3 に答える 3

2

コードは正しいようです...var="CustomerList"別の名前に変更してみてください...

問題は、同じ名前でアクセスすると混乱を招く可能性があることです${CustomerList.customerName}

var="customers" だけを試してください

それから${customers.customerName}

于 2013-09-11T12:55:09.683 に答える
1

私はそれが主に次の理由によると仮定します:

<"option value="${CustomerList}">${CustomerList.customerName}</"/"option>

あなたが設定したいかもしれません

<"option value="${CustomerList.customerID}">${CustomerList.customerName}</"/option>

それがあなたが望むものであると仮定するか、単にcustomerNameをもう一度

于 2013-12-23T10:32:55.967 に答える
-1

(POSTではなく)GETマッピングに設定すると、そこに表示されます

編集:

(サーブレット上で)doGETメソッドにそれが必要であり、サイト上にあり、postメソッドを使用して値を回復できます。

于 2016-10-17T14:42:33.933 に答える