【问题标题】:How to specify JSON url to js method in a JSF based application如何在基于 JSF 的应用程序中指定 JSON url 到 js 方法
【发布时间】:2011-09-06 19:12:54
【问题描述】:

我正在使用fcbkComplete 实现一个multiselect autocomplete textbox(类似于Stackoverflow 用于tags 输入的那个)。为了实现,我需要将 JSON 对象从 JSF 传输到 Jquery 函数。 (需要将 JSON url 指定为fcbkComplete 的参数)。

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

我正在使用 JSF 2.0 和 Primefaces 3.0M3。如果有人能告诉我如何在基于 JSF 的应用程序中为 js 方法指定 JSON url,我将不胜感激。

谢谢

【问题讨论】:

    标签: json jsf jsf-2 primefaces


    【解决方案1】:

    最简单的方法是,您可以让 JSF 托管 bean getter 返回所需的 JSON 作为 String 并将其分配给视图模板中内联的 JS 变量:

    <script>
        var json = #{bean.json};
        // ...
    </script>
    

    (请注意,变量值未加引号!即使用var json = '#{bean.json}'; 将不起作用)

    如有必要,您可以使用Google Gson 在Java 对象和JSON 字符串之间轻松转换。如有必要,您可以将 &lt;script&gt;id 放在 &lt;h:panelGroup&gt; 中,以便在 ajax 请求时重新呈现它。如有必要,您可以最终将其包装在复合组件中。

    确实,它非常简陋,PrimeFaces可能有更好的方法来解决这个问题,但我不知道有什么。


    作为一个完全不同的替代方案,当数据不依赖于 JSF 上下文中的任何内容时(可能是一些会话范围的托管 bean,无论如何都可以作为 HttpSession 属性使用),您还可以创建一个简单的 @ 987654322@ 在接到jQuery.ajax() 电话后完成这项工作。您可以在此答案中找到几个示例:How to use Servlets and Ajax?

    【讨论】:

    • 如果我只是通过托管 bean 的 getter 设置 js 变量,JS 方法是否有可能在页面呈现后触发进一步的数据请求!?? fcbkComplete 库方法还要求我为 jsons 指定一个 url,正如您在我添加的代码中看到的那样
    • 1) 是的,只需在该行之后或文档准备期间调用 JS 函数。 2) 然后使用 servlet。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2021-02-27
    • 1970-01-01
    • 2021-03-10
    • 2018-01-01
    相关资源
    最近更新 更多