Передача значений флажков из формы в контроллер в Thymeleaf - PullRequest
0 голосов
/ 21 октября 2018

Моя проблема в том, что я не могу найти что-либо, касающееся того, как передать значения флажков (проверено / не проверено) из формы в мой @Controller.Я использую Thymeleaf для моего интерфейса.

Вот мой код:

<form action="#" th:action="@{/passwordaenderung}" th:object="${password}" method="post">
    <table border="1" style="width:50%">
        <thead>
            <tr>
                <th> Benutzername </th>
                <th> Passwort </th>
            </tr>
        </thead>
        <tbody>
        <tr th:if="${users.empty}">
                <td colspan="2"> No Users available</td>
            </tr>
            <tr th:each="user : ${users}">
                <td><input type="text" th:value="${user.benutzername}" name="username" id="username"></td>
                <td><input type="text" id="password" name="password" required />
                <td><input type="checkbox" th:field="*{multiCheckboxSelectedValues}" />
            </tr>
        </tbody>
    </table>
    <input type="submit" value="Submit">
</form>

А вот мой контроллер:

   @PostMapping
    public String updateOldPassword(@Valid @ModelAttribute("password") PasswordChange userAndpassword,
            BindingResult result, ModelMap model) {
    if (result.hasErrors()) {
        return "error";
    }

    String username = userAndpassword.getUsername();
    String password = userAndpassword.getPassword();

    String newPassword = passwordEncoder.encode(password);

    passwordRepo.updatePassword(username, newPassword);
    return "redirect:/";
}

Я хочу выполнить, если это возможно, чтобы поместить все мои поля в список, чтобы у меня были имя пользователя, пароль и флажок в списке.

1 Ответ

0 голосов
/ 21 октября 2018

Итак, я смог решить мою проблему, знаю:

Это мой взгляд:

<form action="#" th:action="@{/passwordaenderung}" th:object="${form}"
  method="post">
    <fieldset>
        <table>
            <thead>
                <tr>
                    <th> Title</th>
                    <th> Author</th>
                </tr>
            </thead>
            <tbody>
                <tr th:each="book, itemStat : *{users}">
                    <td><input th:field="*{users[__${itemStat.index}__].username}" /></td>
                    <td><input th:field="*{users[__${itemStat.index}__].password}" /></td>
                </tr>
            </tbody>
        </table>
        <input type="submit" id="submitButton" th:value="Speichern">
    </fieldset>
</form>

Контроллер:

@Controller
@RequestMapping("/passwordaenderung")
public class Passwortaenderung {

    @Autowired
    private UserRepository userRepo;

    @Autowired
    private PasswordEncoder passwordEncoder;

    @Autowired
    private updateOldPasswordRepository passwordRepo;

    @GetMapping 
    public String showPasswordChangeForm(Model model) {
        UserCreationDto userForm = new UserCreationDto();
        User user;

        List<Benutzer> b = userRepo.findAll();

        for(int i = 0; i<b.size(); i++) {
            user = new User();
            user.setUsername(b.get(i).getBenutzername());
            user.setPassword(b.get(i).getPasswort());
            user.setChecked(false);
            userForm.addBook(user);
        }

        model.addAttribute("form", userForm);
        return "passwordaenderung";
    }

    @PostMapping
    public String updateOldPassword(@ModelAttribute UserCreationDto userTableSettings,
                                    BindingResult result,
                                    Model model) {
        if (result.hasErrors()) {
            return "error";
        }

        List<User> users = userTableSettings.getUsers();

        for(int i = 0; i<users.size(); i++) {
            String username = users.get(i).getUsername();
            String newPassword = passwordEncoder.encode(users.get(i).getPassword());

            passwordRepo.updatePassword(username, newPassword);             
        }
        return "redirect:/passwordaenderung";
    }
}

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

Но как мне получить строку с установленным флажком?

...