我们正在开发一个使用Jersey-ReST公开服务的应用程序。在某些情况下,我们需要返回JSP而不是仅返回JSON响应。我在互联网上进行了搜索,找到了实现此目标的一些方法。以下是我到目前为止完成的配置:

Web.xml

<servlet>
        <servlet-name>jersey-servlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>in.test.resource.MyApp</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
            <param-value>/WEB-INF/jsp</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>


ReST资源Java类

@GET
@Path("/somePath")
public Response getPickListItems(@QueryParam("name") String name) {
    // business logic
    return Response.ok(new Viewable("/myJsp.jsp", "Test")).build();
}


现在,当我在浏览器中点击URL时,只能将其作为响应:
{"templateName":"/myJsp.jsp","model":"Test","resolvingClass":null,"templateNameAbsolute":true}

我也提到了this blog post,但徒劳无功。

我有两个问题:


从ReST服务响应中返回JSP真的可以实现吗?
如果是,我是否缺少某些东西?

最佳答案

这是通过使用temporaryRedirectResponse解决的:

Response.temporaryRedirect(URI.create("REQUIRED_URL").build();

10-07 19:12
查看更多