Значение по умолчанию Spring MVC не работает

@RequestMapping(value = "/Fin_AddBankAccount", method = RequestMethod.POST)
public @ResponseBody JsonResponse addCoaCategory(
    @RequestParam(value="code", required=true) long code,
    @RequestParam(value="startFrom", required=true) long startFrom,
    @RequestParam(value="name", required=true, defaultValue="N/A") String name)
    {

    }

defaultValue = "N / A" не работает. Поскольку я не указал никакого текста в поле имени, он сохраняет в базе данных null вместо "N / A"?


person Shahid Ghafoor    schedule 12.05.2013    source источник


Ответы (4)


Какой смысл устанавливать значение по умолчанию, если вам действительно нужен этот параметр. если вы отметите его как обязательное значение true (не требуется, поскольку оно установлено по умолчанию), тогда значение по умолчанию не требуется. Если этот параметр не является обязательным, отметьте его как ложное и укажите значение по умолчанию.

person Sanjaya Liyanage    schedule 12.05.2013

Документация Spring RequestParam.required

По умолчанию true, что приводит к возникновению исключения в случае отсутствия параметра в запросе. Измените это значение на false, если вы предпочитаете null в случае отсутствия параметра.

Из вашего вопроса я понял, что вы отправляете параметр name с пустым значением с помощью запроса POST. Согласно документации Spring, вы не должны отправлять параметр name в запросе, чтобы использовать значение по умолчанию. Просто удалите поле name из HTML-формы, если оно пустое.

Кажется, что значения по умолчанию имеют больше смысла для запросов GET.

person Grzegorz Żur    schedule 12.05.2013

убедитесь, что вы не передаете пустое строковое значение. Допустимые методы: 1. Fin_AddBankAccount? name = O / P: name = "N / A"

  1. Fin_AddBankAccount? O / P: name = "N / A"

Недействительные методы: Fin_AddBankAccount? Name = "" это установит пустую строку в переменную, т.е. name = "";

person Vijay Gawade    schedule 29.10.2019

В моем проекте

@RequestParam(value="name", required=true, defaultValue="N/A") String name

Этот код правильно устанавливает переменную name как значение по умолчанию N / A, если параметр requestparam «name» не был предоставлен. Я предполагаю, что вы неправильно вставляете эту переменную имени в таблицу, поэтому база данных хранит null вместо «N / A». Покажите нам или дважды проверьте код объекта доступа к данным. Удачи


Спасибо @ Tiarê Balbi, на самом деле вам не нужно "required = true", потому что defaultValue = "N / A" в любом случае неявно устанавливает эту переменную как required = false.

person Jason    schedule 12.05.2013