Применение бросков org.springframework.expression.spel.SpelEvaluationException: EL1007E: (поз 0): Свойство или поле «Название» не может быть найден на нульSpring/Thymeleaf: свойство или поле 'title' не найдено на null. Зачем?
, и я не могу понять, почему ... Вот html-фрагмент, вызванный мастером.
<title th:fragment="title">Surveys Feed</title>
<div th:fragment="content" th:each="surv : ${allSurveys}" >
<div id="surv-ct" style="min-width: 310px; max-width: 800px; height:400px; margin: 0 auto">
<script th:inline="javascript">
/*<![CDATA[*/
$('#surv-ct').highcharts({
chart: {
type: 'bar'
},
title: {
text: [[${surv.title}]]
},
// ... other stuff
</script>
</div>
</div>
Однако, когда приложение запущено, название поля не равно нулю! Здесь мы имеем отображение fot объекта allSurveys, которое берет все опросы из репо и возвращает список.
@ModelAttribute("allSurveys")
public List<Survey> allSurveys() {
List<Survey> surveys = new Surveys(repo.findAll()).getSurveys();
// print surveys titles
for (int i = 0; i < surveys.size(); i++) {
Survey sur = surveys.get(i);
System.out.println("Survey info: " + sur.getTitle());
}
return surveys;
}
В качестве доказательства мы можем видеть, что названия при обследованиях печатаются на консоли: Console output
И они присутствуют в базе данных Surveys Database
Так почему же он сказать, что является недействительным ? Я видел разные ответы в Интернете, но ни один из них не является решением для моего дела.
Заранее благодарю вас за помощь.
EDIT: По предложению я попытался напечатать объект $ {surv}. Я изменил атрибут «surv-ct» внутреннего div от ID к классу, так как они предполагаются многими.
<div th:fragment="content" th:each="surv : ${allSurveys}" >
<div class="surv-ct" style="min-width: 310px; max-width: 800px; height: 400px; margin: 0 auto">
<p>Object is: <span th:text=${surv}>obj</span></p>
<!--
<script th:inline="javascript">
/*<![CDATA[*/
$('.surv-ct').highcharts({
chart: {
type: 'bar'
},
// ... more code
-->
</div>
</div>
Когда я анализирую код на Mozilla, это результат.
<p>Object is: <span></span></p>
<!--
<script th:inline="javascript">
/*<![CDATA[*/
$('.surv-ct').highcharts({
// ... more code that i deleted
// it's commented anyway
-->
Прежде всего, печатается только один результат. А во-вторых, он не получает никакого объекта. Вот почему поле «title» является нулевым, я думаю. Так почему же тогда объект null? Любое предложение?
Что-то я хотел бы сделать, чтобы отладить это было бы удалить '[[$ {surv.title}]]' некоторое время, и вместо того, чтобы печатать только '$ {Surv}' где-нибудь. Таким образом, вы увидите, какие опросы являются нулевыми (поскольку одно или несколько опросов являются нулевыми, а не названиями), если размер списка опросов является точным и т. Д. –
Обычно заголовок должен быть текстовым, но в вашем случае, похоже, текст в вложенном массиве. –
Нет, это обозначение javascript-тимелеар (по-видимому). [См. Здесь] (http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.HTML # скрипт-встраивание-на JavaScript и-дротик) –