我正在尝试使用 Mootools (请求.JSON)与 JSF 一起 - 主要是因为我前段时间在 CakePHP 中编写了一个类似的应用程序,并且希望重用大部分 JS 部分。
有什么办法可以返回吗纯文本(“application/json”) 使用来自无标记 Facelet 之类的请求?
我想出的唯一解决方案是使用HttpServlet并将其注册到 web.xml 中的服务 URL。这种方法有效并且确实返回一个没有任何标记的文件,但我宁愿使用 Spring 注入的 ManagedProperties 而不是仅限于 WebApplicationContextUtils。
我错过了什么还是这是推荐的方式?
有一种方法。但这是丑陋的,本质上是对 JSF/Facelets 的滥用,因为使用了错误的工具来完成工作。
E.g.
<ui:composition
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:event type="preRenderView" listener="#{bean.renderJson}" />
</ui:composition>
with
public void renderJson() throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.setResponseContentType("application/json");
externalContext.setResponseCharacterEncoding("UTF-8");
externalContext.getResponseOutputWriter().write(someJsonString);
facesContext.responseComplete();
}
更好的是使用 JAX-RS Web 服务。我不确定 Spring 托管 bean 是否可注入,但新的 Java EE 6 CDI 允许您注入@Named
到处都是豆子@Inject
,即使在一个简单的@WebServlet
.
也可以看看:
- Servlet 与 RESTful
- 如何使用 Servlet 和 Ajax?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)