В простейшем случае вы можете просто позволить управляемому компоненту JSF получить желаемый JSON как String
и присвоить его переменной JS, которая встроена в шаблон представления:
<script>
var json = #{bean.json};
// ...
</script>
(обратите внимание, что значение переменной не заключено в кавычки! Т.е. использование var json = '#{bean.json}';
не сработает)
При необходимости вы можете использовать среди прочих Google Gson для простого преобразования между объектами Java и строками JSON. При необходимости вы можете поместить это <script>
в <h:panelGroup>
с id
, чтобы оно могло быть повторно обработано по запросу ajax. При необходимости вы можете обернуть это в составной компонент.
Правда, это очень по-спартански, у PrimeFaces может есть лучшие способы приблизиться к этому, но я не знаю ни одного.
В качестве совершенно другой альтернативы, когда данные не зависят ни от чего в контексте JSF (возможно, от какого-то управляемого сессионного компонента, который в любом случае доступен как атрибут HttpSession
), вы также можете создать простой сервлет , который выполняет работу по вызову jQuery.ajax()
. В этом ответе вы можете найти несколько примеров: Как использовать сервлеты и Ajax?