2011-07-11 50 views
1

我正在使用jQuery向JSF 2.0服务器发出AJAX调用。在“页面”我呼吁看起来像这样:JSON Renderkit - 或者如何将JSON返回给JSF客户端?

<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" } 

在客户端,我剥去<HTML>和</HTML >标记,使用jQuery parseJSON并返回一个JSON对象。我试图指定没有HTML标签的模板,它抱怨。似乎这是我可以产生的最低限度的回应。

我想有一个RenderKit,它可以让我只返回纯粹的JSON。

回答

0

我会建议你使用RESTEasy库和Jaxson提供者。从这开始并不难。 经过适当的配置后,您只需要实现对服务器的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。 Ofc它支持XML,GET请求并且有很多其他功能。支持Spring。

0

只是不发出这些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> 

好多然而确实使用Web服务这一点。 JSF是一个基于组件的MVC框架,而不是一个Web服务框架。看看JAX-RS/JAX-WS。

相关问题