首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在百里叶中将复选框值从表单传递到控制器

在百里叶中将复选框值从表单传递到控制器
EN

Stack Overflow用户
提问于 2018-10-21 18:55:23
回答 1查看 349关注 0票数 0

我的问题是,我找不到任何关于如何从表单向我的@Controller传递复选框值(选中/未选中)的内容。我使用Thymeleaf作为我的前端。

下面是我的代码:

代码语言:javascript
运行
复制
<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>

这是我的控制器:

代码语言:javascript
运行
复制
   @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:/";
}

如果可能的话,我想实现将所有字段放入一个列表中,这样我就可以在一个列表中拥有用户名、密码和复选框。

EN

回答 1

Stack Overflow用户

发布于 2018-10-21 23:37:00

所以,我能够解决我的问题,知道:

这是我的观点:

代码语言:javascript
运行
复制
<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>

控制器:

代码语言:javascript
运行
复制
@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";
    }
}

我现在想要完成的是在表单中添加一个复选框,这样用户就可以选择要更新的用户。

但是如何选中复选框所在的行呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52914535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档