Получение входных данных флажка (Groovy Html MarkupBuilder + SpringBoot) - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок ie в Groovy и SpringBoot, но должен использовать эти технологии в своей работе. У меня есть классы User и Role, у них нет никаких отношений внутри классов. В Get-action в Controller я передаю пользователю форму и список всех возможных ролей. Класс контроллера:

@GetMapping
public String edit(Model model){
    model.addAttribute("user", new User());
    model.addAttribute("roles", roleRepository.findAll());
    return "edit";
}

Мой файл edit.tpl:

...
form(..., method:'post'){
    label(for:'username', 'Username: ')
    input(type:'text', id:'username', name:'username', value:user.username)
    label("Add roles: ")br()
    roles.each {role -> 
        label(for:role.name, role.name)
        input(type:'checkbox', id:role.name, name:role.name, value:role.name)
        br()
    }
    input(type:'hidden', id:'_method', name:'_method', value:'put')
    input(type:'submit', class:'btn btn-info', value:'Save')
}

Я хочу получить все отмеченные роли. Вот так: role_1 не проверено role_2 проверено role_3 проверено List = [роль_2, роль_3]; Я получаю пользователя следующим образом:

@PutMapping("{id}")
public String update(@Valid User user, @PathVariable Long id){
    user.setId(id);
    userRepository.save(user);
    return "redirect:/users";
}

А также в будущем я хочу как-то проверить текущие активные роли при передаче их в форму. Вот так: текущие активные роли: role_2, role_3. Когда я делаю Get-запрос, чтобы показать форму для редактирования, у меня отключен role_1 и проверены role_2 и role_3. Мои занятия следующие:

public class Role{
    private String name;
    //getters, setters, etc.
}

public class User{
    @NotBlank(message="Please enter username")
    private String username;
    //getters, setters, etc.
}

Спасибо за любую помощь !! :)

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел способ получить необходимую информацию из входов флажка: используйте аннотацию @RequestParam следующим образом:

Контроллер. java

public String update(@Valid User user, @RequestParam("roleIDs") List<Long> roles, @PathVariable Long id){
    System.out.println(roles); //-the checked roles
    return "redirect: /users";
}

Groovy Файл .tpl:

roles.each {role -> 
    label(for:role.name, role.name)
    input(type:'checkbox', id:role.name, name:'roleIDs', value:role.id)
    br()
}

Похоже, я не нашел нужный вопрос:)

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