: EL1008E: Свойство или поле ‘LEVEL’ не могут быть найдены для объекта типа ‘java.util.ArrayList’ — может быть, не является общедоступным или недействительным?

#spring-boot #spring-mvc #arraylist #thymeleaf

#spring-boot #весна-mvc #список массивов #thymeleaf

Вопрос:

пожалуйста, помогите с приведенным ниже. Я пытаюсь отобразить arraylist, возвращенный контроллером, и отобразить его в Html-таблице, но я получаю приведенную выше ошибку.

вот мой код контроллера:

 @GetMapping(value="/chart" )
public List<List<CanvasjsChartData.DataPointModel>> chart(Model modelMap) {
    List<List<CanvasjsChartData.DataPointModel>> dataPointsList = canvasjsChartService.getCanvasjsChartData();
    modelMap.addAttribute("dataPointsList", dataPointsList);
    System.out.println("dataPointsList");
    return dataPointsList;
}
 

и это таблица, в которой я хочу отобразить свой список

 <table class="table" id="dataTable" style="width:100%">

<thead>
<th>Level</th>
<th>Occurences</th>
</thead>

<tbody>
<tr th:each="item :${dataPointsList}">
   <td th:text="${item.LEVEL}"> </td>
    <td th:text="${item.OCCURENCES}"> </td>
</tr>
</tr>
</tbody>
 

Я точно знаю, что в ArrayList есть необходимые мне данные, как показано ниже, я не знаю, почему он выдает мне ошибку
арралист

Ответ №1:

Ваша отладка показывает, что у вас есть List<List<CanvasjsChartData.DataPointModel>> (два списка внутри друг друга) — когда ваш HTML ожидает List<CanvasjsChartData.DataPointModel> . Вы должны исправить это в своем контроллере / модели, вернув только один список.

Вы также можете отобразить свой HTML следующим образом (где вы перебираете 0-й элемент внешнего массива):

 <tr th:each="item :${dataPointsList[0]}">
  <td th:text="${item.LEVEL}" />
  <td th:text="${item.OCCURENCES}" />
</tr>