У меня есть флажок внутри моей формы:
<div class="form-check form-check-inline">
<input type="checkbox" th:field="${search.titleIncl}" />
<label class="form-check-label" th:for="${#ids.next('covered')}">Title</label>
</div>
Этот флажок по умолчанию должен быть включен, поскольку для объекта поиска это значение имеет значение true.Это отлично работает.То, что я ожидал от этого флажка, это отправить либо true, либо false, когда его отметили / сняли флажок.То, что я получил сейчас, это True, если его проверил, и ничего, когда не проверил.Это его небольшая проблема для меня:
В контроллере:
@GetMapping(value = Utils.MAPPING_INDEX)
public ModelAndView index(@RequestParam("titleIncl") Optional<Boolean> titleIncl) {
...calling fillSearch inside of body....
}
private Search fillSearch(Optional<Boolean> titleIncl..) {
Search search = new Search();
//Get seach value if nothing provided give me default.
search.setTitleIncl(titleIncl.orElse(search.isTitleIncl()));
...
return search;
}
Весь смысл этой формы - заставить пользователя выбрать, какие части объекта он хочет найти:
Так что, если он снимает флажок и я не отправляю FALSE необязательно, я сталкиваюсь с проблемой.
Когда пользователь изначально заходит на сайт, он не отправляет ни одного изэти параметры, поэтому он ведет себя нормально, устанавливая все в true.Когда он начинает поиск и отменяет выбор частей, в которых он не хочет искать, он все равно получает значения по умолчанию и выполняет поиск по всему.
Так есть ли простой способ отправки Optional FALSE, если значение флажка не выбрано?
Примечание:
Под простым я подразумеваю создание дополнительной конечной точки для поиска этой формы и отсутствие Javascript:)
И да, форма находится под запросом GET