从浏览器向JSF Managed Bean发送JSON文本(Primefaces)

时间:2012-08-25 18:07:56

标签: jquery json jsf primefaces

我正在开发一个应用程序,我正在考虑以JSON格式将信息发送回浏览器,并让java脚本根据信息呈现页面。以同样的方式,我想以JSON格式将更新从浏览器推送到托管bean。我们能在JSF + Primefaces中完成这个吗?

我们考虑使用JSON的原因是限制来回传递的数据量。

2 个答案:

答案 0 :(得分:1)

我可以推荐使用Gson Gson User Guide

以下是如何从服务器

创建/发送/解析json的简短示例 你的bean中的

做这样的事情

Gson gson = new Gson();
myJsonString = gson.toJson(someObjectOrListOfObjects);

在xhtml中

<h:inputHidden id="my_json_data" value="#{myBean.someObjectOrListOfObjects}" />

在你的js文件中

var data = $('input[id$="my_json_data"]').val();
data = jQuery.parseJSON(data); //to parse it, use dev tools/fire bug to add data variable to watch and observe it

答案 1 :(得分:0)

不是滚动自己的传递JSON而不是XML / HTML的JSF实现,而是建议其他一些方法来最小化要发送的数据。

使对话框,制表视图,数据表等动态化。

PrimeFaces可以选择让某些元素动态化。这意味着他们在用户请求时加载。这可以增加页面加载。

使用较小的表单

我看到很多用户只使用一个<h:form>,因为如果所有内容都在表单中,您就不会忘记在需要一个表单的元素周围放置一个表单。这是完全错误的,导致在表单中发布所有内容而不仅仅是页面的相关部分。在需要的地方使用表格,并仔细检查萤火虫发送的内容。

使用客户端验证

使用客户端验证来防止用户发送错误的输入。这样就不会来回发送错误的数据(永远)。一个很好的副作用是用户收到快速“响应”。注意:这并不意味着您可以放弃服务器端验证。出于安全考虑,需要进行服务器端验证。