У меня проблемы с настройкой initBinder в Spring MVC. У меня есть ModelAttribute, в котором есть поле, которое иногда будет отображаться.
public class Model {
private String strVal;
private int intVal;
private boolean boolVal; // Only shows in certain situations
}
Как правильно настроить этот initBinder? Вот что у меня есть, но всякий раз, когда я изменяю данные поста, я могу изменить этот boolVal независимо от того, что я говорю, что это запрещено. Я предполагаю, что моя проблема в том, что я не могу использовать ярлык, который хотел бы.
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setIgnoreUnknownFields(true);
if (binder.objectName() == MODEL) {
binder.setAllowedFields("*");
if (!somePermissionChecks()) {
binder.setDisallowedFields("boolVal");
}
}
}
Проверка прав доступа возвращает ложь, поэтому выполняется вызов setDisallowedFields. Проблема в том, что я все еще могу подделать это значение в пользовательском интерфейсе, добавив ввод или изменив имя другого поля или добавив его к данным POST.
Есть ли быстрый способ сделать это, не перечисляя все свойства вручную?