我正在使用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