gpt4 book ai didi

json - 如何从 JSF 生成 JSON 响应?

转载 作者:行者123 更新时间:2023-12-03 13:42:06 24 4
gpt4 key购买 nike

我创建了一个页面,我想从 JSF 页面获取 JSON 响应,
但是当我尝试获取页面时,它会显示整个 html 页面。

<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Facelet Title</title></head><body>
[{"value": "21", "name": "Mick Jagger"},{"value": "43", "name": "Johnny Storm"},{"value": "46", "name": "Richard Hatch"},{"value": "54", "name": "Kelly Slater"},{"value": "55", "name": "Rudy Hamilton"},{"value": "79", "name": "Michael Jordan"}]

</body></html>

最佳答案

JSF 是一个生成 HTML 的 MVC 框架,而不是某种 REST Web 服务框架。您本质上是在将 JSF 作为 Web 服务来滥用。您的具体问题只是由放置 <html> 引起的。标签等自己在 View 文件中。

如果你真的坚持,那么你总是可以通过使用 <ui:composition> 来实现。而不是 <html> .您还需要确保 application/json 的内容类型正确。已被使用,这在 JSF 中默认为 text/html .

<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 或 JAX-WS,而不是将 JSF 用作 JSON Web 服务。为工作使用正确的工具。

也可以看看:
  • How to implement JAX-RS RESTful service in JSF framework
  • Servlet vs RESTful
  • What is the need of JSF, when UI can be achieved from CSS, HTML, JavaScript, jQuery?
  • 关于json - 如何从 JSF 生成 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982762/

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