Моя цель — иметь единый источник достоверности для всех имен атрибутов модели (например, "doctorSearchForm") с использованием общедоступных статических финальных констант String в классе Java и использовать эти константы как в моих внутренних контроллерах Spring, так и в шаблонах Thymeleaf. Это гарантирует, что если я изменю имя атрибута модели, я изменю его только в одном месте.
Класс ModelConstants
Код: Выделить всё
public final class ModelConstants {
public static final String DOCTOR_SEARCH_FORM = "doctorSearchForm";
public static final String DOCTOR_SEARCH_RESULTS = "doctorSearchResults";
public static final String PAGE_ALERT_LIST = "pageAlerts";
private ModelConstants() {}
}
Код: Выделить всё
@GetMapping("/booking")
public String booking(Model model) {
if (!model.containsAttribute(ModelConstants.DOCTOR_SEARCH_FORM)) {
model.addAttribute(ModelConstants.DOCTOR_SEARCH_FORM, new DoctorSearchDto());
}
return "booking";
}
Код: Выделить всё
th:with="searchForm=${#vars[T(com.example.model.ModelConstants).DOCTOR_SEARCH_FORM]}">
// ISSUE HERE
...
Код: Выделить всё
IllegalStateException: Neither BindingResult nor plain target object for bean name 'searchForm' available as request attribute
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/79646985/thymeleaf-thobject-with-thwith-variable[/url]
Мобильная версия