Spring MVC использует методы установки для установки свойств объектов ModelAttribute? - PullRequest
3 голосов
/ 02 февраля 2012

Использует ли Spring MVC методы получения и установки для установки значений объектов ModelAttribute? Подскажите, пожалуйста, источники, которые так говорят. А если нет, то как мы можем заставить Spring MVC использовать сеттеры для установки свойств объекта модели?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Я не знаю, действительно ли это отвечает на вопрос, но я нашел эту цитату в документации:

Объекты команды или формы для привязки параметров запроса к свойствам бина (через сеттеры) или непосредственно к полям, с настраиваемым преобразованием типов, в зависимости от методов @InitBinder и / или конфигурации HandlerAdapter.... Аннотация ModelAttribute может использоваться в аргументе метода для настройки имени используемого атрибута модели.

Это означает, что сеттеры будут использоваться, если они доступны, с прямым обновлением полей какотступление.

Но если вы хотите получить окончательный ответ, посмотрите на исходный код.

0 голосов
/ 10 сентября 2015

Я также сталкиваюсь с этой проблемой, ситуация ниже:

фрагмент кода:

Product.java

public class Product {

    private String name;
    private String imageStr;
    private List<ProdutImage> productImageList;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<ProductImage> getProductImageList() {
        return this.productImageList;
    }

    public void setProductImageList(List<ProductImage> productImageList) {
        this.productImageList = productImageList;
        if (productImageList != null) {
            this.imageStr = [...]// convert list to json string
        }
    }

}

он не установил "imageStr"напрямую, но на основе поля списка изображений, страница jsp нравится:

 <form>
      <input type="text" name="product.name"/>
      <input type="text" name="product.productImageList[0]"/>
      <input type="text" name="product.productImageList[1]"/>
      <input type="text" name="product.productImageList[2]"/>
   </form>

при отправке формы," name "и" productImageList "все могут быть успешно заполнены, одна вещь отличается, япоместив точку останова как в «setName», так и в «setProductImageList», мы можем обнаружить, что вызывается «setName», но не «setProductImageList», потому что «imageStr» имеет значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...