JSON Renderkit -或者我如何将JSON返回到JSF客户端



我正在使用jQuery对JSF 2.0服务器进行AJAX调用。我调用的"page"看起来像这样:

<ui:composition template="/templates/jsonTemplate.xhtml">
    <ui:define name="content">
    #{tabBean.jsonUrl}
    </ui:define>
</ui:composition>

其中jsonTemplate.xhtml看起来像这样:

<html xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:insert name="content" />
</html>

发送到客户端的结果包含我的JSON对象和HTML标记,我必须在客户端上剥离它们。

我想返回的是一个纯JSON对象。

{ "url" : "/this/is/my/url.xhtml" }
在客户端,我去掉了和使用jQuery来parseJSON并返回一个JSON对象。我试图指定没有HTML标签的模板,它抱怨。似乎这是我能产生的最低限度的响应。

我想有一个RenderKit,这将使我返回什么都没有,但纯JSON。

我建议您使用带有Jaxson提供程序的restasy库。从它开始并不难。经过适当的配置后,您只需要实现对服务器的ajax请求。Java代码类似于:

@POST
@Path("/getPossiblePhases")
@Encoded
@Produces("application/json")
public List<Process> getPossiblePhases(@FormParam("prfID") Long prfID){
    return new List<Process>(); // some list here for example
}

作为响应,您将只得到JSON。它支持xml、GET请求和许多其他特性。支持Spring .

就是不要发出这些HTML标签。

代替

<html xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:insert name="content" />
</html>

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:insert name="content" />
</ui:composition>
然而,更好的方法是使用webservice。JSF是基于组件的MVC框架,而不是web服务框架。查看JAX-RS/JAX-WS

相关内容

  • 没有找到相关文章

最新更新