Я использую Spring 3.2, и я ищу способ, которым я могу заставить контроллеры указать, какие атрибуты разрешены для привязки, поэтому злонамеренные пользователи не могут вводить значения в связанные объекты. Весна рекомендует использовать setAllowedFields()
в белый список/setDisallowedFields()
в черный список.Создание глобальной initBinder с использованием Spring
Вместо того, чтобы вручную выполнять этот белый список, я хочу сделать это динамически, поэтому я хочу связать атрибуты, которые видны в форме.
Так можно ли получить этот белый список? Есть ли способ получить видимые атрибуты в форме?
Спасибо.
Можете ли вы объяснить немного лучше, что вы пытаетесь сделать? Я не совсем понимаю, что вы пытаетесь решить здесь. 'InitBinder()' используется для указания Spring, как преобразовать данные String из UI-сообщения в атрибут объекта/модели домена. – CodeChimp
О, извините. Поэтому давайте скажем, что у меня есть форма, которая содержит firstname, lastname, является администратором или нет (скажем, isAdministrator). Имя и фамилия видны, поэтому пользователи могут изменять эти два параметра. Однако они не видят атрибут isAdministrator, отправляя конкретный запрос, который они могут изменить. Я хочу, чтобы получить видимые атрибуты динамически, потому что у меня большое приложение, и создание белого списка/черного списка вручную будет носить суровый характер. Я использую метод initBinder() 'ConfigurableWebBindingInitializer', таким образом, я могу глобально заставить контроллеры. – AnnH
Если вы помещаете атрибут Model Attet в сеанс, почему вы накладываете isAdministrator на страницу вообще? Если вы установите его в атрибуте модели и установите его как атрибут сеанса, то значение будет оставаться повсюду и вообще не будет видимым для пользователя. – CodeChimp