我们在 Jersey 1.x 中使用 加载 JSP 页面com.sun.jersey.api.view.Viewable
,例如:
@GET
public Viewable get() {
return new Viewable("/myPage.jsp", "");
}
Jersey 2.0 中上述的等效代码是什么?
@Ankur 谢谢
import org.glassfish.jersey.server.mvc.Viewable;
@Path("/")
public class MyController {
@GET
@Produces("text/html")
public Response index() {
return Response.ok(new Viewable("/index.jsp")).build();
}
}
pom.xml
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
<version>2.21</version>
</dependency>
正如@Werner Vesterås 所提到的,这在 Jersey 2.0 中尚不可用。
MessageBodyWriter
但是,如果您绝对需要这个,那么如果您编写一个转发到 JSP的方法,则可能会得到解决方法。我认为这Viewable
就是 Jersey 1.x 中的处理方式(使用 aViewableMessageBodyWriter
解析 a JSPTemplateProcessor
)或类似于 CXFRequestDispatcherProvider
对 JSP 重定向所做的处理。
请注意,尽管JAX-RS 2.0 规范仍然是一个草案,而Jersey 2.0 仍然是一个里程碑,因此可能会发生实施变化。如果您打算在生产环境中使用它,您可能应该重新考虑并坚持使用 Jersey 1.x。
在 Jersey 2.0 中,使用下面来加载 jsp 页面。
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
<version>${jersey2.version}</version>
</dependency>
在您的代码中,如果将模型发送到 jsp,请像这样使用:
return new Viewable("/index.jsp", model);
如果没有模型被发送到jsp,像这样使用:
return new Viewable("/index.jsp", null);
或
return new Viewable("/index.jsp");
根据http://java.net/projects/jersey/lists/dev/archive/2012-12/message/2,该功能尚未移植到 Jersey 2.0。