Передать атрибут модели Spring в скрипт JS - PullRequest
0 голосов
/ 22 мая 2018

Итак, мои данные анализируются в json, а затем вставляются в атрибуты модели.Например:

@RequestMapping("/{id}")
public String getNetworkDetails(Model model, @PathVariable String id) throws JsonProcessingException{

    model.addAttribute("poolHashrates", findAndDisplayDataService.getAllPools(Long.valueOf(id)));
    model.addAttribute("poolDataJson", findAndDisplayDataService.returnPoolsAsJson(Long.valueOf(id)));

    return "networkDetails :: modalContents";
}

Далее я пытаюсь присвоить строку poolDataJson переменной JS во фрагменте html с помощью:

<script>
    var data = eval('('+'${poolDataJson}'+')');
    console.log(data);
</script>

Что я хотел бы сделать сданные, это передать его во внешний файл JavaScript в качестве данных для моей круговой диаграммы.Но сначала я получаю сообщение об ошибке при назначении строки:

Uncaught SyntaxError: Unexpected token {

Чего мне не хватает?

РЕДАКТИРОВАТЬ

Я также пыталсяприсвоение строки json скрытому вводу с помощью:

<input type="hidden" id="networkId" th:value="${poolDataJson}"/></td>

и затем чтение с помощью:

var data = document.getElementById('networkId').innerHTML;
console.log(data);

Но, опять же, ничего не печатается в консоли.Когда я вставляю ${poolDataJson} в

, он правильно печатается на странице ...

1 Ответ

0 голосов
/ 22 мая 2018

Вы не должны возвращать строку в виде текста JSON.Вместо этого вам следует возвращать обычные объекты Java и затем оценивать их следующим образом (thymeleaf автоматически преобразует объекты в JSON):

<script th:inline="javascript">
var data = /*[[${poolDataJson}]]*/ {};
console.log(data);
</script>

Что касается ваших ошибок.Я должен был бы предположить, что ваш метод findAndDisplayDataService.returnPoolsAsJson возвращает неверный JSON.Трудно сказать без реального примера.

...