【问题标题】:Drop Down list Null Pointer JSP to Servlet下拉列表空指针 JSP 到 Servlet
【发布时间】:2015-03-05 14:50:53
【问题描述】:

我在从 jsp 获取下拉列表中的值时遇到了困难。我得到一个空值的字符串,它只是“”。但是,如果我只为部门使用文本框,它将起作用。我很难找到代码中的错误在哪里。

这是我的 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;

【问题讨论】:

  • 我可以在线搜索并提供答案,但我建议您根本不要使用&lt;sql:query&gt;。将该查询移动到您的 Servlet 并从那里提供数据,而不是直接从您的 JSP 提供。
  • 但是对于这种情况,您知道如何解决吗?
  • 是的,但不会提供这样的答案。我不会支持糟糕的设计。
  • 你能告诉我一些
  • 这是一个例子:stackoverflow.com/questions/5003142/jsp-using-mvc-and-jdbc 顺便说一句,您的错误是一个简单的错字。仔细查看${} 中选项值的基本引用。

标签: java mysql jsp servlets jstl


【解决方案1】:

问题是您没有满足 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 的有用链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2012-01-21
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多