Не передаются данные JSP -> Controller (Spring mvc)

166
29 марта 2019, 14:30

Изучаю Spring. Пытаюсь создать форму регистрации. Но после заполнения формы объект User в addUserFromForm приходит пустым. В bindingResult также нет никаких ошибок, чтобы я туда не вводил.

UserController.java

package mvc;
import db.UserDAO;
import entities.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/user")
public class UserController {
    private UserDAO userDAO;
    @Autowired
    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    @RequestMapping(value = "/r", method = RequestMethod.GET)
    public String regUser(Model model){
        model.addAttribute(new User());
        return "reg";
    }
    @RequestMapping(value = "/r", method = RequestMethod.POST)
    public String addUserFromForm(User user, BindingResult bindingResult){
        if (bindingResult.hasErrors()) return "reg";
        System.out.println(user);
        userDAO.persistUser(user); //Валится здесь из-за того, что все поля пустые
        System.out.println(bindingResult.getFieldErrors().size());
        return "redirect:/user/" + user.getNickName();
    }

User.java

package entities;
import db.UserDAO;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.util.Objects;
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    private int id;
    @Size(min = 4, max = 50, message = "От 4 до 50 символов")
    @Column(nullable = false)
    private String name;
    @Size(min = 6, max = 20, message = "От 6 до 20 символов")
    private String password;

    private boolean admin;

    private String position;
    @ManyToOne
    @JoinColumn(name = "DEPARTMENT_ID")
    private Department department;
    @ManyToOne
    @JoinColumn(name = "ORG_ID", nullable = false)
    private Organization organization;

    private byte[] photo; 
    private byte[] photo_small;

    private UserSettings settings;

    @Transient
    private UserDAO userDAO; 

    public User() {
    }

registration_form.jsp

<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Registration</title>
</head>
<body>
<div class="reg_container">
    <sf:form enctype="multipart/form-data" method="post" modelAttribute="user">
    <div class="reg_block">
        <label class="reg_field">
            Введите Ваше имя:
            <sf:input path="name" size="50" maxlength="50"/>
            <img src="../../resources/checkbox.jpg">
            <sf:errors path="name" cssClass="error"/>
        </label>
    </div>
    <div class="reg_block">
        <label class="reg_field">
            Введите пароль:
            <sf:password path="password" size="20"/>
            <img src="../../resources/checkbox.jpg">
            <sf:errors path="password" cssClass="error"/>
        </label>
    </div>
    <div class="reg_block">
        <label class="reg_field">
            Повторите пароль:
            <input type="password">
            <img src="../../resources/checkbox.jpg">
        </label>
    </div>
    <div class="form_photo reg_block">
        <label class="reg_field">Загрузите фото:
            <input type="file" name="photo" accept="image/*" class="select_avatar">
            <img src="../../resources/checkbox.jpg">
        </label>
    </div>
        <div class="reg_block">
            <input name="commit" type="submit" >
        </div>
    </sf:form>
</div>
</body>
</html>
Answer 1

Добавь к аргументу user метода addUserFromForm аннотацию @RequestBody:

public String addUserFromForm(@RequestBody User user, BindingResult bindingResult) {...}
READ ALSO
Привести Object к Cookie

Привести Object к Cookie

Столкнулся с такой проблемойВ БД записал объект класса Cookie вот таким вот образом :

244
Отслеживание схожесть символов Java

Отслеживание схожесть символов Java

Есть не тривиальная задачка отслеживать схожесть идентификаторов +- в %-ном соотношенииБольше надеюсь узнать нет ли какой то либы от гугла,...

173
Эмуляция событий мыши на телефоне

Эмуляция событий мыши на телефоне

Пишу вэб приложение на javascript которое должно быть кросплатформенным, но столкнулся с проблемой при работе с сайтом на телефоне не работают...

154
как изменить приоритет у события?

как изменить приоритет у события?

При нажатии на ссылку производиться скроллМне необходимо, что бы при скролле нажав на другую ссылку, поменялся приоритет и изменения скролла...

203