Связывание с пружинным путем: связано ли оно непосредственно с переменной или вызывает конструктор / сеттер? - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть форма с пружинным переплетом (modelAttribute), которая отображает информацию о пользователе.Телефонный номер пользователя отображается в отформатированном виде, но требуется, чтобы номер сохранялся в базе данных без каких-либо знаков.

Таким образом, в методе получения моего объекта пользователя я форматирую телефонный номер в соответствии с правиламии в сеттер я положил код для удаления специальных знаков.Часть форматирования работает нормально, но часть установщика, где я удаляю знаки, кажется, не возникает.

В моем конструкторе я также сделал:

setTelephoneNumber(TelephoneNumber);

Таким образом, конструктор также вызывает установщик.

Я использую Spring 3.0.4 и Spring-mvc.

Любые замечания по этому вопросу и способы их решения приветствуются.

edit: controller section:

model.addAttribute ("пользователь", пользователь);

JSP (немного сокращен, но это суть. SubmitUrl из-за среды портала:

<form:form action="${submitUrl}" modelAttribute="user">
<form:input path="telephoneNumber"/>
</form>

Модель phoneNumber setter:

if(!StringUtils.isBlank(telephoneNumber)){
    this.telephoneNumber = telephoneNumber.replaceAll("[^0-9]", "");
} else{
    this.telephoneNumber= "";
}

И я так думаю, потому что значение попадает в базу данных с форматированием, которое я использовал. (Интервал)

Ответы [ 2 ]

3 голосов
/ 22 декабря 2010

Даже если это не правильный ответ на ваш вопрос:

Я настоятельно рекомендую выполнить форматирование другим способом, чем с помощью установщика getter

Spring 3.0 предоставляет то, что они называют "типом"преобразование "

Использование этого было бы намного чище.

0 голосов
/ 23 декабря 2010

Возвращаясь к вашему вопросу: привязка пути Spring: связана ли она непосредственно с переменной или она вызывает конструктор / сеттеры?

Как обычно, я понимаю Doc Java и некоторые фрагменты кода, Spring использует BeanWrapper ( BeanWrapperImpl ) для установки значений Beans (@see Ссылка: 5.4 Управление бином и BeanWrapper ).И BeanWrapperImpl ведет себя так, как сказано в ссылке: использует setter и getter для доступа к «простым» значениям.

Это похоже на ссылку, указанную в разделе «5.4.1 Установка и получение основных и вложенных свойств»: для выражения"имя":

Указывает имя свойства, соответствующее методам getName () или isName () и setName (..)

Так что по крайней мере это ответ на ваш вопрос, поэтому я предполагаю, что причиной вашей проблемы является нечто другое.

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