2013-04-20 17 views
11

Sorunum şudur:Thymeleaf kullanarak bir formda kullanmak için iki nesne nasıl geçilir?

Tek bir formdan doldurmama olanak sağlayan 2 değişik nesne var. 1 nesne ile

, ben sadece newFoo.html yapmak:

@RequestMapping(value = "/foo/new", method = RequestMethod.GET) 
    public String newFoo(final Foo foo, Model model) { 
     return "newFoo"; 
    } 

@RequestMapping(value = "/foo/new", method = RequestMethod.POST) 
    public String saveFoo(final Foo foo, final BindingResult bindingResult, Model model) { 
     fooService.save(foo); 
     return "redirect:/foo/new"; 
    } 

ı bir "statü" ile bir diğer nesne çubuğu ettik diyelim:

<form th:object="${foo} th:action="@{/foo}" method="post"> 
     <input type="text" th:field="*{name}" /> 
     <button type="submit">Go</button> 
</form> 

ve FooController içinde değişkeni. Bu nesneyi geçmek için nasıl yapabilirim, böylece girişi aynı formda gönderebilirim?

gibi:

<form th:object="${foo} && ${bar}" th:action="@{/foo}" method="post"> 
     <input type="text" th:field="*{name}" /> 
     <input type="text" th:field="*{status}" /> 
     <button type="submit">Go</button> 
</form> 

Şimdiye kadar bir inci ile fieldset için uğraşmaya: çalışmadığını, içinde nesnenin, iki inci koymak için çalıştı: formda nesneyi, o gelmez ya da işe yaramıyor.

Bulduğum tek yol, bu iki nesneyi içeren başka bir nesne oluşturmak ve iletmektir. Bu iyi çalışıyor, ama bu tür bir nesneyi oluşturamıyorum, bu saçmalık (işe yaramış olsa bile).

Tabii ki, nesneler burada Foo ve Bar kadar basit değil, aksi takdirde bu ikisini birleştirirdim. Ama bu yapabileceğim bir şey değil.

Bir formda kullanmak için bunun gibi iki nesneyi geçmek mümkün mü?

Teşekkürler.

cevap

17

İki th:objects kullanmanız gerektiğini düşünmüyorum. Sadece onların doğru komut nesnesi, foo veya bara alanlarınızı haritası çıkarılır haritalama teknikleri kullanmak, denetleyici tarafında, th:value

<form th:action="@{/foo}" method="post"> 
     <input type="text" th:value="${foo.name}" name="name"/> 
     <input type="text" th:value="${bar.status}" name="status"/> 
     <button type="submit">Go</button> 
</form> 

Ben Bahar yeterince akıllı olduğunu düşünürdüm kullanın.

+1

Sadece bunu denedim ve aslında bu işe yaramıyor. Gönderildikten sonra aldığımda, nesnenin tüm değişkenleri boş. Bağlama sonuçları nesneleri null, Model aynı. Yine de teşekkürler. Görünüşe göre Bahar yeterince akıllı değil. – brnrd

+6

Oh, çünkü onlar için bir isim yapmadık. 'Name' girdisi, fasulye alan adıyla eşleşmelidir. –

+0

İyi çalışıyor! Çok teşekkür ederim. – brnrd

İlgili konular