Как указать URL JSON для метода js в приложении на основе JSF - PullRequest
0 голосов
/ 06 сентября 2011

Я использую текстовое поле автозаполнения с множественным выбором (аналогично тому, которое Stackoverflow использует для ввода tags), используя fcbkComplete.Для реализации мне нужно перенести объекты JSON в функцию Jquery из JSF.(Необходимо указать URL-адрес JSON в качестве параметра fcbkComplete).

           $("select0").fcbkcomplete({
                   json_url: "fetched.txt"
           });

Я использую JSF 2.0 с Primefaces 3.0M3.Я был бы признателен, если бы кто-нибудь показал мне направление относительно того, как я могу указать URL JSON для метода js в приложении на основе JSF.

Спасибо

1 Ответ

0 голосов
/ 06 сентября 2011

В простейшем случае вы можете просто позволить управляемому компоненту 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?

...