看文章here ,有一个示例说明如何使用 TemplateProcessor 来使用 Jersey 解析 JSP View 。显然这个类现在已经被弃用并被 ViewProcessor
其他ViewProcessor article is here.
谢谢。
最佳答案
如果您想插入对新型模板的支持,则应实现 ViewProcessor。如果您只需要 JSP 模板,那么它已经内置到 Jersey 中,您不需要实现自己的 ViewProcessor。
如果您的 JSP 文件位于 WEB-INF/views 下,那么您可以设置 JSP_TEMPLATES_BASE_PATH WEB-INF/views 的初始化参数。然后您只需要从您的资源方法返回一个新的 Viewable 实例(如您所指的 Paul 的博客所示)并将模板名称作为第一个参数和数据(模型)作为第二个参数传递给构造函数。然后在 JSP 中,您可以使用名为“it”的属性访问数据。
更新:如果你的 url-pattern 是“/*”,那就有点复杂了。 Jersey 在委托(delegate)给容器时无法解析模板,因为 Jersey servlet 屏蔽了 JSP。为了使容器能够看到 JSP,您还需要做两件事:
- 将 Jersey servlet 注册为过滤器而不是 servlet(只需在 web.xml 中用过滤器替换出现的 servlet)- 请参阅此 javadoc 页面的底部:http://jersey.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/spi/container/servlet/package-summary.html
- 添加PROPERTY_WEB_PAGE_CONTENT_REGEX过滤器的初始参数并将其设置为 jsp 模板匹配的正则表达式(例如“/WEB-INF/views/.*”)
如果您仍然认为出于某种原因必须实现自定义 ViewProcessor,您可以查看 freemarker View 处理器的实现方式并从中获得启发 - 请参阅 http://java.net/projects/jersey/sources/svn/content/trunk/jersey/contribs/jersey-freemarker/src/main/java/com/sun/jersey/freemarker/FreemarkerViewProcessor.java?rev=5453
关于java - 如何实现自定义 ViewProcessor<T> (jax-rs)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931469/