как перенести данные из одной формы JSP в другую - PullRequest
0 голосов
/ 05 мая 2019

Я пишу простое учебное приложение, использующее Spring Hibernate, где я сохраняю данные пользователя по частям, пользователь вводит данные при регистрации, и в моем аккаунте возникла проблема, я не знаю, как перенести данные из первой формыко второму на другой странице JSP, чтобы передать на другой контроллер и сохранить в базе данных как данные одного человека

registration.jsp

    <spring:form name="myForm" action="save-user" method="post"
            modelAttribute="user" onsubmit="return validateForm()">
            <spring:hidden path="id" />


        <div class="center">
            емайл: <br>
            <spring:input path="userEmail" />
            <br> <br>
        </div>

        <div class="center">
            логин: <br>
            <spring:input path="userLogin" />
            <br> <br>
        </div>

        <div class="center">
            пароль: <br>
            <spring:input path="password" />
            <br> <br>
        </div>

        <div class="center">
            <input type="submit" value="зарегистрироваться">
        </div>
    </spring:form>

    <form action="registration" method="post"></form>
RegistrationController{

    @RequestMapping(value = "/save-user", method = RequestMethod.POST)
    public ModelAndView saveUser(UserBean user) {
        userService.saveUser(user);
        Integer id = user.getId();
        String email = user.getUserEmail();
        String login = user.getUserLogin();
        String password = user.getPassword();
                Map<String, String> result = new HashMap<String, String>();
        result.put("email", email);
        result.put("id", String.valueOf(id));
        result.put("login", login);
        result.put("password", password);
        return new ModelAndView("privateroom", result);
    }
}
privateroom.jsp

 <spring:form name="myForm_1" action="save-user-two" method="post"
            modelAttribute="user" onsubmit="return validateForm()">
             <spring:hidden path="${id}" />


        <div class="center">
            имя: <br>
            <spring:input path="userName" />
            <br> <br>
        </div>

        <div class="center">
            фамилия: <br>
            <spring:input path="userSurname" />
            <br> <br>
        </div>

        <div class="center">
            дата рождения: <br>
            <spring:input path="userDateOfBirth" />
            <br> <br>
        </div>
        <spring:hidden path="${email}"/>
        <spring:hidden path="${login}"/>
            <spring:hidden path="${password}"/>


        <div class="center">
            <input type="submit" value="дополнить данные">
        </div>
    </spring:form>

PrivateRoomController{

@RequestMapping(value = "/save-user-two", method = RequestMethod.POST)
    public ModelAndView saveUser(UserBean user) {
        userService.saveUser(user);

        return new ModelAndView("privateroom");
    }

}

1 Ответ

0 голосов
/ 05 мая 2019

В этом случае вы можете хранить пользовательскую информацию в сеансе каждый раз, когда информация передается от клиента (браузера) к контроллеру.

Примечание: я рекомендую не отправлять информацию в браузер клиента для сохранения в скрытых полях, особенно не следует отправлять пароль обратно в браузер клиента. Вы можете отправить оставшиеся (электронная почта, идентификатор, логин), если вам действительно нужно показать их на следующей странице.

RegistrationController {

  @RequestMapping(value = "/save-user", method = RequestMethod.POST)
  public ModelAndView saveUser(UserBean user, HttpSession session) {

    // Store user object in the user's session
    session.setAttribute("user", user);

    // Return back some information for showing purpose only
    Map<String, String> result = new HashMap<String, String>();
    result.put("email", user.getEmail());
    result.put("id", String.valueOf(user.getId()));
    result.put("login", user.getLogin());
    return new ModelAndView("privateroom", result);
  }

}

Во время последней отправки вы можете получить информацию о пользователе из сеанса и сохранить ее с помощью userService.saveUser.

PrivateRoomController {

    @RequestMapping(value = "/save-user-two", method = RequestMethod.POST)
    public ModelAndView saveUser(UserBean user, HttpSession session) {

        // Retrieve user object in the user's session
        UserBean userFromSession = session.getAttribute("user");

        // Update some additional values
        userFromSession.setUserName(user.getUserName());
        userFromSession.setUserSurename(user.getUserSurename());
        userFromSession.setUserDateOfBirth(user.getUserDateOfBirth());

        // Save to database at once
        userService.saveUser(userFromSession);

        return new ModelAndView("privateroom");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...