Spring MVC + Thymeleaf Post одиночный объект на контроллере - PullRequest
0 голосов
/ 22 октября 2019

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

Возвращаясь к моему вопросу, я просто хочу опубликовать один объект (бин)из формы. Я бы хотел, чтобы мой метод отображения контроллера связывался с этим bean-компонентом «pojo», а не с кучей строк / целых чисел.

Единственное, что я нашел, что это близко, - это вещи наStackOverflow, где половина кода находится в вопросе, другая половина находится в ответе, и всегда есть несколько комментариев от людей, которые говорят, что это не работает для них.

Может ли кто-нибудь предложить какое-либо облегчение здесь спростой старый скучный пример?

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Может быть полезен приведенный ниже фрагмент кода.

Отображение GET / POST контроллера:

@RequestMapping(value = "/registration", method = RequestMethod.GET)
public String registartionPage(Model model) {

Registration registration = new Registration();

model.addAttribute("registration", registration);

return "registarion/registarion";
}

@RequestMapping(value = "/user/new-user-registrn", method = RequestMethod.POST)
public String newUserRegistrn(Model model, @ModelAttribute("registration") 
Registration registration, RedirectAttributes redirectAttributes) {

try {

    StarUser user = starSecurityService.findSysUserName(registration.getUserName());
    if (user != null) {
        throw new Exception("User Already Exist. Please try with different User Name");
    }

    user = (StarUser) starUtilService.save(setStarUser(registration));
    model.addAttribute("registration", registration);
    if (user != null) {

        redirectAttributes.addAttribute("starMessage",
            "Your Account is successfully created !! Login to Access the Application");

        return "redirect:/";
    }

} catch (Exception e) {

    model.addAttribute(STAR_MESSAGE, e.getMessage());
}

return "registarion/registarion";
}

Содержимое тимелиста:

<form class="form-horizontal col-sm-12" method="POST" th:action="@{/user/new-user-registrn}" th:object="${registration}">

<div class="row">

    <div class="form-group col-md-12">
        <div class="star-reg-header">New User Registration</div>
    </div>

    <div class="star-reg-body">

        <div class="form-group col-sm-4">
            <label class="required">First Name: </label>
            <input type="text" class="form-control required" th:field="*{firstName}" required="required" />
        </div>

        <div class="form-group col-sm-4">
            <label class="required">Last Name: </label>
            <input type="text" class="form-control" th:field="*{lastName}" required="required" />
        </div>

        <div class="form-group col-sm-4">
            <label class="required">User Name: </label>
            <input type="text" class="form-control" th:field="*{userName}" required="required" />
        </div>

        <div class="form-group col-sm-4">
            <label class="required">Password: </label>
            <input type="password" class="form-control" th:field="*{password}" required="required" />
        </div>

        <div class="form-group col-sm-4">
            <label class="required">Email: </label>
            <input type="text" class="form-control" th:field="*{email}" required="required" />
        </div>

    </div>

</div>
<div class="form-group col-md-12">
    <label class="col-sm-2"></label>
    <div class="col-sm-10">
        <button type="submit" class="btn btn-info">Submit</button>
    </div>
</div>

Класс Java Bean

public class Registration {

 protected String firstName;

 protected String lastName;

 protected String userName;

 protected String password;

 protected String email;

 //Setter and Getter

}       
1 голос
/ 22 октября 2019

Используйте @ModelAttribute аннотацию в параметре.

Примерно так.

@RequestMapping(value = "/someurl", method = RequestMethod.POST)
public String savePojo(@ModelAttribute PojoClass pojo, Model model) {
    //Code
}

Редактировать : Этот ответ содержит очень хорошую информацию по этому вопросу. Что такое @ModelAttribute в Spring MVC?

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