【发布时间】:2011-02-05 20:24:03
【问题描述】:
我有一个主要使用 Richfaces 的 JSF 应用程序。我想介绍一个功能更丰富的网格控件,比如基于jQuery的jqgrid。是否可以从 JSF 支持 bean 获取 JSON 数据?如果没有,是否有替代方法?
【问题讨论】:
我有一个主要使用 Richfaces 的 JSF 应用程序。我想介绍一个功能更丰富的网格控件,比如基于jQuery的jqgrid。是否可以从 JSF 支持 bean 获取 JSON 数据?如果没有,是否有替代方法?
【问题讨论】:
您还可以将 JAX-RS 用于返回 JSON 对象的 REST 服务。 JAX-RS 和 JSF 都是 Java EE 6 的一部分。此外,通过新的 JEE6 依赖注入 (CDI),您可以轻松地在 JSF 托管 bean 和 JAX-RS 服务之间共享会话状态 - JSF 托管 bean 可以@Inject 注入服务类。
【讨论】:
这里可能有几个选项。
Bean 方法可以返回一个字符串,它只是一个 JSON 字符串
public String getSearchResult(){
results = SearchService.getResults();
return JsonHelper.convertToJson(results);
}
您可以使用 JsonLib 将 Java 对象转换为 Json。
使用不同的 Servlet 为网格请求提供服务
我会推荐这种方法。原因是您可以有一个 JSON 请求,然后是一个 JSON 响应,而无需打扰 JSF。因为我不认为当你使用 jQuery 时你需要使用 JSF。所以不要在其中混入 JSF,这种情况下可以直接绕过 JSF 层。因为在这里没有意义。这是我使用的方法。我可以和你分享代码来实现这一点。
使用 JSF Phase Listener 返回 Json 响应。
希望对你有帮助
【讨论】: