title: Java Spring problem with send data from the form
body: <p>For the &quot;Problem&quot; class, I want to add a &quot;Priorytet&quot; class field. &quot;Problem&quot; has its own fields: id, title(tytul), description(opis) etc. and also has a field related to the &quot;Priorytet&quot; class, which is: id, name(nazwa), time(maksymalnyCzas).
  What's the problem? When I submit the form, the &quot;priorytet&quot; field in the &quot;Problem&quot; class goes blank(It only contains the id of the &quot;Priority&quot; class item).</p>
  <p>Priorytet class</p>
  <pre><code>public class Priorytet {
      private long id;
      private String nazwa;
      private long maksymalnyCzas;
  
      public Priorytet(long id, String nazwa, long maksymalnyCzas) {
          this.id = id;
          this.nazwa = nazwa;
          this.maksymalnyCzas = maksymalnyCzas;
      }
  
      public Priorytet() {
  
      }
  
      public long getId() {
          return id;
      }
  
      public void setId(long id) {
          this.id = id;
      }
  
      public String getNazwa() {
          return nazwa;
      }
  
      public void setNazwa(String nazwa) {
          this.nazwa = nazwa;
      }
  
      public long getMaksymalnyCzas() {
          return maksymalnyCzas;
      }
  
      public void setMaksymalnyCzas(long maksymalnyCzas) {
          this.maksymalnyCzas = maksymalnyCzas;
      }
  
  }
  </code></pre>
  <p>Problem class</p>
  <pre><code>public class Problem {
      private long id;
      private String tytul;
      private String opis;
      @DateTimeFormat(pattern = &quot;yyyy-MM-dd&quot;)
      private LocalDate dataZgloszenia;
      private float kosztRozwiazania;
      private boolean rozwiazany;
      private Priorytet priorytet;
  
      public Problem(long id, String tytul, String opis, LocalDate dataZgloszenia, float kosztRozwiazania, boolean rozwiazany, Priorytet priorytet) {
          this.id = id;
          this.tytul = tytul;
          this.opis = opis;
          this.dataZgloszenia = dataZgloszenia;
          this.kosztRozwiazania = kosztRozwiazania;
          this.rozwiazany = rozwiazany;
          this.priorytet = priorytet;
      }
  
      public Problem() {
  
      }
  
      public long getId() {
          return id;
      }
  
      public void setId(long id) {
          this.id = id;
      }
  
      public String getTytul() {
          return tytul;
      }
  
      public void setTytul(String tytul) {
          this.tytul = tytul;
      }
  
      public String getOpis() {
          return opis;
      }
  
      public void setOpis(String opis) {
          this.opis = opis;
      }
  
      public LocalDate getDataZgloszenia() {
          return dataZgloszenia;
      }
  
      public void setDataZgloszenia(LocalDate dataZgloszenia) {
          this.dataZgloszenia = dataZgloszenia;
      }
  
      public Float getKosztRozwiazania() {
          return kosztRozwiazania;
      }
  
      public void setKosztRozwiazania(float kosztRozwiazania) {
          this.kosztRozwiazania = kosztRozwiazania;
      }
  
      public Boolean getRozwiazany() {
          return rozwiazany;
      }
  
      public void setRozwiazany(boolean rozwiazany) {
          this.rozwiazany = rozwiazany;
      }
  
      public Priorytet getPriorytet() {
          return priorytet;
      }
  
      public void setPriorytet(Priorytet priorytet) {
          this.priorytet = priorytet;
      }
  }
  </code></pre>
  <p>Controller</p>
  <pre><code>@Controller
  public class kontroler {
      private static List&lt;Problem&gt; lista = new ArrayList&lt;&gt;();
      private static List&lt;Priorytet&gt; priorytetList = new ArrayList&lt;&gt;();
  
      @GetMapping(value = &quot;/wypelnij&quot;)
      public String wypelnij(Model model){
          Priorytet priorytet = new Priorytet(0,&quot;Najniższy&quot;,14);
      Priorytet priorytet1 = new Priorytet(1,&quot;Średni&quot;,7);
      Priorytet priorytet2 = new Priorytet(2,&quot;Najwyższy&quot;,2);
  
      priorytetList.add(priorytet);
      priorytetList.add(priorytet1);
      priorytetList.add(priorytet2);
  
          LocalDate date1 = LocalDate.of(2017, 1, 13);
          LocalDate date2 = LocalDate.of(2021, 10, 8);
          var a = new Problem(0,&quot;Przykladowy problem numer 1&quot;, &quot;Przykładowy opis problemu #1&quot;, date1, 155.3f, true, priorytetList.get(1));
          var b = new Problem(1,&quot;Przykladowy problem numer 2&quot;, &quot;Przykładowy opis problemu #2&quot;, date2, 125.5f, false, priorytetList.get(2));
  
          lista.add(a);
          lista.add(b);
  
          model.addAttribute(&quot;listaProblemow&quot;,lista);
          return &quot;wyswietlLista&quot;;
      }
  
      @GetMapping(value = &quot;/problem&quot;)
      public String dodaj(Model model){
          LocalDate date1 = LocalDate.of(2017, 1, 13);
          var b = new Problem(1,&quot;Przykladowy problem&quot;, &quot;Przykładowy opis problemu&quot;, date1, 125.5f, false, priorytetList.get(0));
  
          model.addAttribute(&quot;problem&quot;,b);
          return &quot;wyswietl&quot;;
      }
  
      @GetMapping(value = &quot;/listaProblemow&quot;)
      public String dodajLista(Model model){
          model.addAttribute(&quot;listaProblemow&quot;,lista);
          return &quot;wyswietlLista&quot;;
      }
  
      @GetMapping(value = {&quot;/add&quot;, &quot;/edit/{problemId}&quot;})
      private String showForm(@PathVariable(name=&quot;problemId&quot;, required=false) Integer id, Model model){
          if (id != null) {
              model.addAttribute(&quot;problem&quot;, lista.get(id));
          }
          else{
              model.addAttribute(&quot;problem&quot;, new Problem(0,&quot;&quot;,&quot;&quot;,null,0f,false, priorytetList.get(0)));
          }
          model.addAttribute(&quot;priorytet&quot;, priorytetList);
  
          return &quot;formularz&quot;;
      }
  
      @PostMapping(value = {&quot;/add&quot;, &quot;/edit/{problemId}&quot;})
      private String processForm(@ModelAttribute(name = &quot;problem&quot;) Problem problem, Model model, @PathVariable(name=&quot;problemId&quot;, required=false) Integer id){
          if(id != null){
              lista.set((int) problem.getId(),problem);
          } else {
              problem.setId(lista.size());
              lista.add(problem);
          }
  
          model.addAttribute(&quot;problem&quot;, problem);
          return &quot;successView&quot;;
      }
  }
  </code></pre>
  <p>formularz.html</p>
  <pre><code>&lt;!DOCTYPE html&gt;
  &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:th=&quot;http://www.thymeleaf.org&quot;&gt;
  &lt;head&gt;
      &lt;meta charset=&quot;UTF-8&quot;&gt;
      &lt;title&gt;Title&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  
  &lt;form method=&quot;POST&quot; th:object=&quot;${problem}&quot;&gt;
      &lt;input type=&quot;hidden&quot; th:field=&quot;*{id}&quot; th:value=&quot;*{id}&quot;&gt;
  
      Priorytet:
      &lt;select th:field=&quot;*{priorytet.id}&quot;&gt;
          &lt;option th:each=&quot;p : ${priorytet}&quot; th:value=&quot;${p.id}&quot; th:text=&quot;${p.nazwa}&quot; th:selected=&quot;${p.id == problem.priorytet.id}&quot;&gt;&lt;/option&gt;
      &lt;/select&gt;&lt;br&gt;
  
      Tytuł: &lt;input type=&quot;text&quot; th:field=&quot;*{tytul}&quot; th:value=&quot;*{tytul}&quot;&gt;&lt;br&gt;
      Opis: &lt;input type=&quot;text&quot; th:field=&quot;*{opis}&quot; th:value=&quot;*{opis}&quot;&gt;&lt;br&gt;
      Data: &lt;input type=&quot;date&quot; th:field=&quot;*{dataZgloszenia}&quot; th:value=&quot;*{dataZgloszenia}&quot;&gt;&lt;br&gt;
      Koszt rozwiązania: &lt;input type=&quot;number&quot; th:field=&quot;*{kosztRozwiazania}&quot; th:value=&quot;*{kosztRozwiazania}&quot;&gt;&lt;br&gt;
      Rozwiązany:
      &lt;select th:field=&quot;*{rozwiazany}&quot;&gt;
          &lt;option value=&quot;true&quot; th:selected=&quot;*{rozwiazany == true}&quot;&gt;Tak&lt;/option&gt;
          &lt;option value=&quot;false&quot; th:selected=&quot;*{rozwiazany == false}&quot;&gt;Nie&lt;/option&gt;
      &lt;/select&gt;&lt;br&gt;
      &lt;input type=&quot;submit&quot; value=&quot;Wyślij&quot;&gt;
  &lt;/form&gt;
  
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>