В одном из действий, которые у меня есть, я привязал длинный (не примитивный) тип к параметру запроса.Spring MVC RequestParam Long Type Binding Always Null
@RequestMapping("/history")
public ModelAndView historyList_GET(
@RequestParam(value="startDate",required=false) Long startDate,
@RequestParam(value="endDate",required=false) Long endDate
)
{
}
Но значения этих переменных всегда равны нулю. Поэтому я проверил документы, искал аналогичную проблему, но ничего не нашел.
Конечно, я могу изменить тип привязки на String, а затем преобразовать его в Long, но это не очень хорошее решение, на мой взгляд. Это всего лишь обходной путь ...
Другой способ, которым я видел, что люди, использующие объект-обертку, связывают его с аннотацией @ModelAttribute. Такие как;
public class Wrapper
{
public Long startDate;
public Long endDate;
}
@RequestMapping("/history")
public ModelAndView historyList_GET(
@ModelAttribute Wrapper dates
)
{
}
, но затем снова это обходное решение.
Я спрашиваю, как это возможно? Почему, несмотря на то, что все другие ссылочные типы прекрасно связывают, Лонг не делает? Это потому, что что-то я пропустил?
Эти запросы по пути ...
/history?endDate=144656539476
/history?startDate=144656539476
/history?startDate=144656539476&endDate=14499999999
Вы должны что-то пропустили, то код при условии, хорошо работает и параметры связаны, как и ожидалось. Вы уверены, что этот конкретный метод выполняется при отправке запроса? Кстати. '@ ModelAttribute' используется для нескольких разных случаев. –
Метод выполняется, когда задан запрос, я уверен в этом. Что касается той части, что я чего-то не хватает, я тоже подумал об этом, но это очень простой метод, он должен быть обязательным ... Я не мог понять, почему. – paroxit
Можете ли вы воспроизвести проблему в каком-то публичном репозитории? –