Подтвердить что ты не робот

Есть ли простой способ превратить пустые формы ввода в пустые строки в Spring MVC?

Я использую Spring MVC и SimpleJdbcInsert для вставки объектов в базу данных MySQL. Я хотел бы установить пустой ввод для NULL в базе данных, а не "". У меня довольно много полей, и я надеюсь найти способ сделать это без ручной проверки каждого значения.

Спасибо!


ОБНОВИТЬ

Так что я идиот. Несколько ошибок с моей стороны заставили меня поверить, что правильные ответы ниже не верны. Я бы написал propertyEditorSupport следующим образом:

class StringEditor extends PropertyEditorSupport {

    public void setAsText(String text) {
        String value = text.trim();
        if ("" == value) {
            setValue(null);  
        } else {  
            setValue(value);  
        }
    }

}  


Есть две проблемы:

  1. нет getAsText, поэтому моя форма заполнялась пустыми строками!
  2. моя проверка на равенство C++, а не Java. Когда я попробовал рекомендуемый метод установки, я просто перезагрузил пост, который уже содержал null строки. Как только я все это почистил, все начало работать.

Спасибо за помощь, и извините за мою "ошибку оператора"!

Brett

4b9b3361

Ответ 1

Класс, который вы ищете, это:

org.springframework.beans.propertyeditors.StringTrimmerEditor

Если вы построите его с помощью true, он преобразует пустые/пробельные строки в нуль. Как его зарегистрировать на связующем, зависит от того, хотите ли вы, чтобы он был по умолчанию или применим только к определенным представлениям.

например, на одном контроллере вы можете просто добавить

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

инструкции здесь

Ответ 2

Я знаю, что это старо, но я потратил около 2 или 3 часов, пока не нашел очень простой способ применить StringTrimmerEditor со связующим для всех моих контроллеров.

Еще раз: я должен помнить RTFM.

В spring 3.2 вы можете создать класс @ControllerAdvice -annottated controller и использовать метод @InitBinder -annotated, как показано в примере @Affe.

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-initbinder-advice

Вот пример:

@ControllerAdvice
@Controller
public class AppBindingInitializer {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
    }

}

Надеюсь, что это поможет кому-то.

Ответ 4

Задайте значение по умолчанию для ваших необязательных полей равным NULL - на самом деле это не NULL по умолчанию?

Разберите свою входную строку и затем явно укажите только заполненные столбцы с помощью

 usingColumns

ой, и я бы посоветовал всегда санировать ваши входы...