gpt4 book ai didi

jsf - 如何从 JAX-RS 方法重定向到 JSF 页面?

转载 作者:行者123 更新时间:2023-12-02 05:29:48 26 4
gpt4 key购买 nike

我有一个 JAX-RS 资源,在解析业务逻辑后,我想在 JSF 页面中显示结果。我怎样才能做到这一点?

@Path("/rest")
public class PaymentServiceRest {

@GET
@Path("/status")
public String method() {

// Business logic...

return "results.xhtml"; // how to return a jsf page?
}
}

客户端第一次访问应用程序时使用 URL,即:http://myApp/rest/status,然后执行一些逻辑并基于此执行重定向。

最佳答案

嗯,我找到了一种从 JAX-RS 方法转发到 JSF 页面的方法:

@GET
@Path("/test")
@Produces("text/html")
public Response test(@Context ServletContext context,
@Context HttpServletRequest request,
@Context HttpServletResponse response) {

try {
String myJsfPage = "/response.xhtml";
context.getRequestDispatcher(myJsfPage).forward(request, response);
} catch (ServletException | IOException ex) {
return Response.status(NOT_FOUND).build();
}
return null;
}

如下所述:https://www.java.net//forum/topic/glassfish/glassfish/forwarding-jsf-jax-rs

通过方法注入(inject)也可以通过字段注入(inject)来完成,这是一个“偏好”问题

这已经在 TomEE (Apache CXF) 中进行了测试。我只是有点好奇这是否只是一个肮脏的“黑客”或者是否有更好的方法来做到这一点。

<小时/>

更新

我找到了一种更好的重定向方法,可以毫无问题地呈现 JSF 标记(在我的例子中,<p:graphicImage/> 等标记无法正确呈现)

@GET
@Path("/test")
@Produces("text/html")
public Response test(@Context HttpServletRequest request, @Context HttpServletResponse response)
throws IOException {
String myJsfPage = "/response.xhtml";
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + myJsfPage);
return Response.status(Status.ACCEPTED).build();
}

关于jsf - 如何从 JAX-RS 方法重定向到 JSF 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481834/

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