Передача значений из сервлета в JSP - PullRequest
0 голосов
/ 24 августа 2011

Я хочу выбрать пользователя из списка и показать значения в полях ввода (чтобы администратор мог их изменить)

JSP имеет форму для выбора пользователя из списка пользователей:

         <form action="UserSelectionController" method="POST">
             <select name="selectedUser" onchange="this.form.submit()">
                <%
                  Object[] userList_ref = UserListService.getUserList();
                  for (int i = 0; i < userList_ref.length; i++) {%>
                        <option  size="5" value="<%=userList_ref[i]%>">           <%=userList_ref[i]%></option> <% }%>
             </select>
        </form>

UserSelectionController считывает значения из базы данных и выглядит следующим образом: (только метод dopost здесь)

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

    this.connectToDataBase();

    Statement stmt_ref = null;
    try {
        stmt_ref = (Statement) connection.createStatement();
        ResultSet results_ref = stmt_ref.executeQuery("SELECT salutation,firstname,lastname,street,houseNr,zip,city,country,email,password FROM User WHERE email = '" + request.getParameter("selectedUser") + "'");

        while (results_ref.next()){
            salutation = results_ref.getString("salutation");
            firstname = results_ref.getString("firstname");
            lastname = results_ref.getString("lastname");
            street = results_ref.getString("street");
            houseNr = results_ref.getInt("houseNr");
            zip = results_ref.getInt("zip");
            city = results_ref.getString("city");
            country = results_ref.getString("country");
            email = results_ref.getString("email");
            password = results_ref.getString("password");
        }
    } catch (SQLException ex) {
        Logger.getLogger(UserSelectionController.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println ("Paramter SelectedUser: "+request.getParameter("selectedUser"));
    System.out.println ("Firstname: "+firstname);

    response.sendRedirect(AbsoluteTerms.DOMAIN_USER_SETTINGS);
}

он также использует методы получения, чтобы вернуть значения обратно вJSP:

    public String getFirstname() {
    return firstname;
}

системные тесты печати показывают правильное значение в сервлете.Redirect отправляется в тот же JSP, откуда пришли данные.Вернувшись в JSP, я хочу показать значение в поле ввода:

   <jsp:useBean id="userSelection" class="servlets.UserSelectionController" />
   <input type="text" name="firstname" value="<% userSelection.getFirstname();%>" />

К сожалению, здесь значения нулевые.А что я могу сделать.Любая подсказка была бы отличной.С наилучшими пожеланиями, Даниэль

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Вы используете свой сервлет, как dto. Это не хорошо.

Создайте еще одно pojo, это будет DTO . Он будет просто иметь переменную-член, являющуюся строкой, и получать геттеры / сеттеры. Заполните его членов результатом вашего запроса и поместите dto в сессию:

request.setAttribute("userSelectionDTO",userSelectionDTO);

затем измените jsp так, чтобы он ссылался на dto:

 <jsp:useBean id="userSelection" class="servlets.UserSelectionDTO" />
 <input type="text" name="firstname" value="<% userSelection.getFirstname();%>"

Это может быть полезно, и используйте JSTL в jsp.

0 голосов
/ 24 августа 2011

Сделайте так, как написал NimChimpsky, или просто сохраните выбранного пользователя в сеансе http.

...