잘 작동하는 코드가 있습니다.
저장소에서 데이터를 검색하고이를 listPlaces로 설정하고 listPlaces를보기에 바인드합니다.
제어 장치
ListPlaces listPlaces = new ListPlaces();
listPlaces.setListPlaces(placeRepository.selectPlaces(idUser));
ModelAndView modelAndView = new ModelAndView("/myplaces.html");
modelAndView.addObject("listPlacesBind", listPlaces);
모델
public class ListPlaces {
private List<Place> listPlaces;
public List<Place> getListPlaces() {
return listPlaces;
}
public void setListPlaces(List<Place> listPlaces) {
this.listPlaces = listPlaces;
}
}
전망
<th:block th:each="place, itemStat : *{listPlaces}">
<span th:text="*{listPlaces[__${itemStat.index}__].codPlace}" />
그런 다음 다음을 수행하여이 코드를 단순화 할 수 있다는 생각이 들었습니다.
- ListPlaces 모델 클래스 제거
- 컨트롤러 코드를 다음과 같이 변경했습니다.
List<Place> listPlaces;
listPlaces = placeRepository.selectPlaces(idUser);
ModelAndView modelAndView = new ModelAndView("/myplaces.html");
modelAndView.addObject("listPlacesBind", listPlaces);
즉, 중간에 모델 클래스를 사용하는 대신 컨트롤러에서 List을 직접 만들어 뷰에 바인딩하려고했습니다.
하지만 다음과 같은 오류가 발생합니다.
Property or field 'listPlaces' cannot be found on object of type 'java.util.ArrayList' - maybe not public or not valid?
디버그 모드에서 실행하기 위해 listPlaces를 "감시"보기로 설정했습니다.
첫 번째 경우에는 두 수준의 "listPlaces"를 만들고 두 번째 경우에는 한 수준 만 만듭니다.
두 번째 수준이 누락 된 것 같습니다.
그렇다면 미들 모델 클래스 없이는 이것을 할 수 없습니까?
아마도 중산층이 필요없이 두 번째 수준을 추가하는 방법이있을 것입니다.