好吧,我找到了一种从 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
通过该方法的注入也可以通过在字段中的注入来完成,这是“偏好”的问题
这已经在 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();
}