The default-options "foo" and "bar" are only added for new requests
authorKai Moritz <kai@juplo.de>
Wed, 22 Jan 2020 09:30:57 +0000 (10:30 +0100)
committerKai Moritz <kai@juplo.de>
Fri, 7 Apr 2023 11:15:40 +0000 (13:15 +0200)
* Otherwise, these options are always automatically readded immediately, when
  they are removed
* A request is considered as new, if it contains the parameter "name", which
  always exists, if a submit is triggered

src/main/java/de/juplo/demo/DemoController.java
src/main/java/de/juplo/demo/Form.java

index a9391db..52fc4fe 100644 (file)
@@ -1,7 +1,9 @@
 package de.juplo.demo;
 
 
+import java.util.LinkedHashMap;
 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;
@@ -18,6 +20,22 @@ import org.thymeleaf.util.StringUtils;
 @Slf4j
 public class DemoController
 {
+  @ModelAttribute
+  public Form createForm(
+      @RequestParam(name = "name", required = false) String param)
+  {
+    Form form = new Form();
+    if (param == null)
+    {
+      form.map =
+        new LinkedHashMap<>(
+            Stream
+                .of( "foo", "bar" )
+                .collect(Collectors.toMap(a -> a, a -> false)));
+    }
+    return form;
+  }
+
   @RequestMapping("/")
   public String display(@ModelAttribute Form form)
   {
index b6e933b..02fcd78 100644 (file)
@@ -1,10 +1,7 @@
 package de.juplo.demo;
 
 
-import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 import lombok.Data;
 
 
@@ -17,9 +14,7 @@ public class Form
 {
   Boolean option;
   Inner inner = new Inner();
-  Map<String, Boolean> map =
-      new LinkedHashMap<>(
-          Stream.of( "foo", "bar" ).collect(Collectors.toMap(a -> a, a -> false)));
+  Map<String, Boolean> map;
 }
 
 @Data