X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fdemo%2FDemoController.java;h=59cc3defc91de1d8633bcbff063e05eb670e4000;hb=804d85a8ec9c52c570320f1e3a135b5bc8019d1d;hp=483ca88454ff770a596efddcd0ba2edfb1a1964c;hpb=ca1ddb54ae8bf1908726a1e8ace2dbfb87266bee;p=demos%2Fspring-boot diff --git a/src/main/java/de/juplo/demo/DemoController.java b/src/main/java/de/juplo/demo/DemoController.java index 483ca88..59cc3de 100644 --- a/src/main/java/de/juplo/demo/DemoController.java +++ b/src/main/java/de/juplo/demo/DemoController.java @@ -1,24 +1,73 @@ package de.juplo.demo; +import java.util.stream.Collectors; +import java.util.stream.Stream; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.thymeleaf.util.StringUtils; /** - * Controller to demonstrate the behavior of the checkbox + * Controller to demonstrate the behavior of checkboxes * @author Kai Moritz */ @Controller @Slf4j public class DemoController { + @ModelAttribute + public Form createForm( + @RequestParam(name = "name", required = false) String param) + { + Form form = new Form(); + if (param == null) + { + Stream + .of( "foo", "bar" ) + .forEach(option -> form.map.put(option, false)); + } + return form; + } + @RequestMapping("/") public String display(@ModelAttribute Form form) { - log.info("option={}", form.option); + log.info( + "option={}, inner={}{}", + form.option, + form.inner.option, + form.map + .entrySet() + .stream() + .map(entry -> entry.getKey() + "=" + entry.getValue()) + .collect(Collectors.joining(", ", ", ", ""))); return "form"; } + + @RequestMapping(path = "/", params = "add") + public String add(@ModelAttribute Form form, @RequestParam String name) + { + if (!StringUtils.isEmptyOrWhitespace(name)) + { + form.map.put(name.trim(), Boolean.FALSE); + log.info("Added option \"{}\" to the map", name.trim()); + } + else + { + log.info("Ignoring empty option-name"); + } + return display(form); + } + + @RequestMapping(path = "/", params = "remove") + public String remove(@ModelAttribute Form form, @RequestParam String remove) + { + Boolean value = form.map.remove(remove); + log.info("Removed option \"{}\" with value {} from the map", remove, value); + return display(form); + } }