下拉列表Null Pointer JSP to Servlet

时间:2015-01-07 16:31:46

标签: java mysql jsp servlets jstl

我很难从jsp获取下拉列表中的值。我得到了一个N​​ull值的String,这是""只要。但是,如果我只为部门使用文本框它将工作。我很难找到代码中的错误。

这是我的JSP文件:

 <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
        <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.8.18.custom.min.js"></script>

        </head>
        <body>

            <form method="POST" action='PersonnelController' name="frmAddData" class="form">

                <fieldset>
                    <legend id="myLegend">User</legend>

                    <label for="firstname">First Name :</label>
                            <input type="text" name="firstname"
                                value="<c:out value="${data.firstname}" />" /><br />

                        <label>Last Name :</label>
                            <input type="text" name="lastname"
                                value="<c:out value="${data.lastname}" />" /><br />

                        <!--<label>Department Name :</label>
                            <input type="text" name="department_id" 
                            value="<c:out value="${data.department_id}" />" /><br />-->

                        <label>Department Name :</label>
                <select name="personnel">
                <c:forEach items="${personnels}" var="personnel">
                <option value="${personnel.department_id}"><c:out value="${personnel.department_name}" /></option>
                </c:forEach>
</select>
                </fieldset>
                <input type="submit" value="Submit" class="submit"/>
            </form>

        </body>
        </html>

这适用于Servlet:

私人部门道dd;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    List<DepartmentBean> personnels = dd.getAllDepartmentName();
    request.setAttribute("personnels", personnels);
    request.getRequestDispatcher("/WEB-INF/personnel.jsp").forward(request, response);
}

}

这是我的DAO:

   public List<DepartmentBean> getAllDepartmentName() {
                List<DepartmentBean> departments = new ArrayList<DepartmentBean>();
                try {
                    Statement statement = connection.createStatement();
                    ResultSet rs = statement.executeQuery("select department_name,id from department ORDER BY department_name");
                    while (rs.next()) {
                        DepartmentBean department = new DepartmentBean();
                        department.setPeople_manager_name(rs.getString("department_name"));
                        departments.add(department);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }

                return departments;

1 个答案:

答案 0 :(得分:0)

问题是您没有在dao类的DepartmentBean对象引用中填写必要的字段。您只填写people_manager_name字段,并且在您的JSP中,您要求department_iddepartment_name的数据,这些数据会调用DepartmentBean#getDepartment_id()DepartmentBean#getDepartment_name()方法

getAllDepartmentName方法中更改此内容:

while (rs.next()) {
    DepartmentBean department = new DepartmentBean();
    department.setDepartment_name(rs.getString("department_name"));
    department.setDepartment_id(rs.getInt("department_id"));
    departments.add(department);
}

这是关于how expression language works的有用链接。