#java #spring #jsp #spring-mvc #modelattribute
#java #весна #jsp #spring-mvc #ModelAttribute
Вопрос:
Я новичок в Spring MVC и пытаюсь преобразовать приложение Struts 2 в Spring MVC. Теперь есть так много вариантов для обработки параметров запроса и настройки данных для отображения.
Позвольте мне объяснить следующим кодом:
@RequestMapping("/sales"
public Class SalesController{
@AutoWired
ISaleService saleService;
...
///getters and setters for service instance.omitted for brevity
...
@RequestMapping("/")
public String viewRoles(@ModelAttribute SaleBean saleBean,
Map<String,Object> model){
List<Sale> sales = getSaleService().getAllSales();
model.put("sales",sales); //Option 1 to render sales on jsp form
SaleBean saleBean = new SaleBean();
saleBean.setSales(sales); //option 2 to render sales on jsp form
model.put("saleBean",saleBean)
}
}
В приведенном выше примере я показал два варианта, которые оба работают нормально, и я могу отображать информацию о продажах в JSP.Также у меня есть имя команды как «saleBean» в моей форме.
1.Is Параметр модели, который обычно используется для размещения данных в исходящем ответе, чтобы их можно было отобразить в JSP, действительно необходим, когда я использую @ModelAttribute в качестве второго параметра?
2.Do Мне нужно явно создать экземпляр класса SaleBean в варианте 2 моего кода? Будет ли spring создавать его экземпляр, если он уже равен нулю?
3.Do Мне нужно явно ввести saleBean в модель?из документов spring кажется, что объект @Modelattribute также неявно помещается в модель.
Комментарии:
1. 1 — Я не понимаю этот вопрос; 2 — spring всегда будет создавать экземпляры
@ModelAttribute
компонентов и привязывать к ним параметры запроса; 3 —@ModelAttribute
будет автоматически включен в атрибуты запроса2. @PavelHoral 1 — Другими словами, всегда ли мне нужна карта модели, если у меня уже есть «@ModelAttribute» и, как вы сказали, он всегда будет помещен в ответ? если да, могу ли я использовать его в своем JSP, не помещая его в модель явно? Я оборачиваю все, что должно быть показано в JSP, в мой SaleBean
3. Если вам не нужны другие атрибуты модели, вам не нужна модель в качестве аргумента метода.
4. @PavelHoral Хорошо. итак, наконец, это означает, что если я оборачиваю все, что будет отображаться в JSP, в моем SaleBean, и я использую его в качестве своего атрибута ModelAttribute, то 1) Мне не нужно использовать Model ma в качестве другого аргумента и 2) Мне не нужно явно указывать мой аргумент salebean в model, чтобы он был в моем JSP. это будет неявно доступно правильно?
5. Да, это правильно.