我正在实现一个多选自动完成文本框(类似于Stackoverflow
用于tags
输入),使用fcbkComplete
。为了实现,我需要将JSON对象从JSF传输到Jquery函数。(需要指定JSON url作为fcbkComplete
的参数)。
$("select0").fcbkcomplete({
json_url: "fetched.txt"
});
我使用JSF 2.0和Primefaces 3.0M3。如果有人能告诉我如何在基于JSF的应用程序中将JSON url指定为js方法,我将不胜感激。
谢谢
最简单的方法是让JSF托管bean getter返回所需的JSON作为String
,并将其分配给视图模板中内联的JS变量:
<script>
var json = #{bean.json};
// ...
</script>
(注意变量值没有引号!)例如,使用var json = '#{bean.json}';
将不工作)
如果有必要,你可以使用Google Gson在Java对象和JSON字符串之间轻松转换。如果有必要,您可以将<script>
与id
放在<h:panelGroup>
中,以便在ajax请求时重新呈现它。如果有必要,你可以把它包装在一个复合组件中。
确实,这是非常简单的,PrimeFaces 可能有更好的方法来接近它,但我不知道任何。
作为一种完全不同的替代方案,当数据不依赖于JSF上下文中的任何内容时(除了可能有一些会话作用域的托管bean,它无论如何都可以作为HttpSession
属性使用),您还可以创建一个简单的servlet,它在jQuery.ajax()
调用时完成这项工作。您可以在以下回答中找到几个示例:如何使用servlet和Ajax?