spring form:select не получаетеся

262
17 августа 2017, 20:56

jsp страничка

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<html>
<head>
    <title></title>
</head>
<body>
<form:form method="POST" modelAttribute="selectForm" class = "form-control">
    <div class="container">
            <form:select path="${login}" name="login" class = "form-control">
                <form:option value="NONE" label="--- Select ---" />
                <form:options items="${usersList}" itemValue="login"/>
            </form:select>
    </div>
      <input class="btn-default btn btn1" type="submit" name="submit" value="Submit">
</form:form>
</body>
</html>

контроллер

@Controller
public class WaiterController{
    @Autowired
    private UserService userService;

    @RequestMapping(value = {"waiter"}, method = RequestMethod.GET)
    public String waiter (Model model) {
        model.addAttribute("selectForm", userService.findAll());
        initModelList(model);
        return "waiter";
    }
    @RequestMapping(value = "/waiter", method = RequestMethod.POST)
    public String waiter(@RequestParam("login") String login, Model model){
        model.addAttribute("selectForm", userService.findByLogin(login));
        initModelList(model);
        return "waiter";
    }
    private void initModelList(Model model) {
        List<User> usersList = userService.findAll();
        List<String> usersLoginList = new ArrayList<String>();
        for (User user : usersList) {
            usersLoginList.add(user.getLogin());
        }
        model.addAttribute("usersList", usersLoginList);
    }
}

User class

@Entity
@Table(name = "users")
public class User {
    public enum Role {
        ROLE_USER, ROLE_ADMIN
    }
    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private long id;
    @Column(name = "firstname")
    private String firstName;
    @Column(name = "lastname")
    private String lastName;
    @Column(name = "login")
    private String login;
    @Column(name = "password")
    private String passwordHash;
    @Column(name = "role")
    private Role role;
    @OneToMany (mappedBy = "user", cascade = CascadeType.ALL)
    private Set<TableC> tableCSet;
    public User() {
    }
    public long getID() {
        return id;
    }
    public void setID(long id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getPasswordHash() {
        return passwordHash;
    }
    public void setPasswordHash(String passwordHash) {
        this.passwordHash = passwordHash;
    }
    public Role getRole() {
        return role;
    }
    public void setRole(Role role) {
        this.role = role;
    }
    public Set<TableC> getTableCSet() {
        return tableCSet;
    }
    public void setTableCSet(Set<TableC> tableCSet) {
        this.tableCSet = tableCSet;
    }
}

проблема в том, что form:select path="" не задается

Answer 1

Смешались в кучу кони, люди...

Чтобы выбор элемента сохранялся, нужно место, где он будет сохраняться. Тег Spring'а <form:form> ожидает в атрибуте modelAttribute объект DTO, а в атрибуте path имя полей этого DTO.

waiter.jsp

...
<form:form method="post" modelAttribute="selectForm">
    <form:select path="login">
        <form:option value="NONE" label="--- Select ---" />
        <form:options items="${userList}" itemValue="login" itemLabel="login" />
    </form:select>
    <input type="submit" />
</form:form>
...

UserForm.java (DTO)

public class UserForm {
    private String login;
    public UserForm() {}
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
}

WaiterController.java

@Controller
@RequestMapping(value = "/waiter")
public class WaiterController {
    @Autowired
    private UserService userService;
    @RequestMapping(method = RequestMethod.GET)
    public String waiter(Model model) {
        model.addAttribute("selectForm", new UserForm());
        model.addAttribute("userList", userService.findAll());
        return "waiter";
    }
    @RequestMapping(method = RequestMethod.POST)
    public String waiter(@ModelAttribute UserForm selectForm, Model model) {
        System.out.println(selectForm.getLogin());
        model.addAttribute("selectForm", selectForm);
        model.addAttribute("userList", userService.findAll());
        return "waiter";
    }
}
READ ALSO
Веб-приложение, архитектура, логика, Java, Servlet, EL, JSP, HTML, SQL, JDBC и Геркулесовая каша в голове. У всех так было поначалу?

Веб-приложение, архитектура, логика, Java, Servlet, EL, JSP, HTML, SQL, JDBC и Геркулесовая каша в голове. У всех так было поначалу?

Прошу сообщество помочь мне в собрании пазла из всех этих технологий, понятий, разработок пестрящих в сети и уложить в моей голове понимание...

220
Сериализация наследуемого класса

Сериализация наследуемого класса

Есть иерархия классов указанная ниже, для сериализации хватит ли имплиментировать Serializable только классу A, для сериализации классов типа...

306
Как сделать жадную выборку в Spring data?

Как сделать жадную выборку в Spring data?

Есть 2 сущьности User и RoleМне нужно сделать выборку User что бы Role которая у User на полях тоже инициализировалась

409
Hibernate mapping конструкции List&lt;Map&lt;String, String&gt;&gt; list

Hibernate mapping конструкции List<Map<String, String>> list

Как замаппить конструкцию вида List<Map<String, String>> list, используя XML mapping Hibernate?

246