我正在开发一个应用程序,我正在考虑以 JSON 格式将信息发送回浏览器,并让 java 脚本根据信息呈现页面。以同样的方式,我想以 JSON 格式将更新从浏览器推送到托管 bean。我们可以在 JSF + Primefaces 中实现这一点吗?
我们考虑使用 JSON 的原因是限制来回传递的数据量。
我正在开发一个应用程序,我正在考虑以 JSON 格式将信息发送回浏览器,并让 java 脚本根据信息呈现页面。以同样的方式,我想以 JSON 格式将更新从浏览器推送到托管 bean。我们可以在 JSF + Primefaces 中实现这一点吗?
我们考虑使用 JSON 的原因是限制来回传递的数据量。
我可以推荐使用 Gson Gson 用户指南
这是一个关于如何从服务器创建/发送/解析 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
与其滚动你自己的传递 JSON 而不是 XML/HTML 的 JSF 实现,我会建议一些其他方法来最小化正在发送的数据。
使对话框、选项卡视图、数据表等动态化。
PrimeFaces 可以选择使某些元素动态化。这意味着它们会在用户请求这些内容时加载。这可以提高页面加载量。
使用较小的表格
我看到很多用户只使用一个<h:form>
,因为如果所有内容都在一个表单中,您就不能忘记在需要一个表单的元素周围放置一个表单。这是完全错误的,并导致在表单中发布所有内容,而不仅仅是页面的相关部分。在需要的地方使用表格,并使用诸如萤火虫之类的东西仔细检查正在发送的内容。
使用客户端验证
使用客户端验证来防止用户发送错误的输入。这样就不会(永远)来回发送错误的数据。一个很好的副作用是用户会收到一个快速的“响应”。注意:这并不意味着您可以放弃服务器端验证。出于安全目的,需要服务器端验证。