gpt4 book ai didi

javascript - JSF + JSON : Output "plain" text in servlet?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:37:00 25 4
gpt4 key购买 nike

我正在尝试将 Mootools (Request.JSON) 与 JSF 一起使用 - 主要是因为我前一段时间在 CakePHP 中编写了一个类似的应用程序,并且想重用大部分 JS 部分。

有没有什么方法可以使用来自无标记 facelet 之类的请求返回纯文本(“application/json”)?

我想到的唯一解决方案是使用 HttpServlet 并将其注册到 web.xml 中的服务 URL。这种方法有效并且确实返回了一个没有任何标记的文件,但我宁愿使用我的 Spring 注入(inject)的 ManagedProperties 而不是仅限于 WebApplicationContextUtils。

我是否遗漏了什么或者这是推荐的方式吗?

最佳答案

有办法。但它很丑陋,而且本质上是在滥用 JSF/Facelets,就像使用错误的工具来完成工作一样。

例如

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

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 网络服务。我不确定 Spring 管理的 bean 是否可以注入(inject)其中,但是新的 Java EE 6 CDI 允许您通过 @Inject@Named bean 注入(inject)到任何地方,即使是在简单的@WebServlet

另见:

关于javascript - JSF + JSON : Output "plain" text in servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com