2013-10-05 1 views
0

В основном у меня есть форма, на которой у меня есть объект «Sighting», когда вы запрашиваете конкретный URL-адрес для прицеливания. Хотя, в форме у меня есть другой объект, который я хотел бы добавить в тег из базы данных. Этот тег select в основном получает все «вредители» из базы данных и заполняет их. Мой контроллер устанавливает добавление 2 таких атрибутов, как это, я не уверен, что это правильный способ сделать это, или один объект будет перезаписывать другой при его отправке.2 Объекты в model.setAttribute метод

My Controller Метод:

@RequestMapping("/sighting") 
public String makeSighting(Model model, Principal principal) { 

    List<Pest> pests = pestsService.getPests(); 
    model.addAttribute("pests", pests); 
    model.addAttribute("sighting", new Sighting()); 

    return "sighting"; 
} 

Если бы вы могли помочь мне, что было бы здорово. При необходимости я также предоставил код для Формы. Thanks

ответ

1

Нет ничего плохого в этом подходе. Но вы можете определить один объект формы подложки для form:

class SightingForm { 
Sighting sighting; 
List<Pest> pests; 
... 
} 

И это может быть использовано для заполнения form:

@RequestMapping("/sighting") 
public String makeSighting(Model model, Principal principal) { 

    List<Pest> pests = pestsService.getPests(); 
    SightingForm sightingForm = new SightingForm(); 
    sightingForm.setSighting(new Sighting()); 
    sightingForm.setPests(pests); 

    model.addAttribute("sightingForm", sightingForm); 

    return "sighting"; 
} 

и в вашей JSP, используйте этот единственный sightingForm в качестве формы поддержки объект:

<form:form id="form" action="${submitUrl}" modelAttribute="sightingForm" method="POST"> 
<form:input path="property" id="propertyId" /> 
... 
</form:form> 
+0

Это именно то, что я искал! Отличный ответ. Спасибо – Maff

+0

@MatthewBobrowski добро пожаловать. –

Смежные вопросы