【发布时间】:2011-10-28 15:33:18
【问题描述】:
查看文章here,有一个示例,说明如何使用 TemplateProcessor 使用 Jersey 解析 JSP 视图。显然这个类现在已经被弃用,取而代之的是 ViewProcessor
另一个ViewProcessor article is here.
谢谢。
【问题讨论】:
标签: java jakarta-ee jersey el jax-rs
查看文章here,有一个示例,说明如何使用 TemplateProcessor 使用 Jersey 解析 JSP 视图。显然这个类现在已经被弃用,取而代之的是 ViewProcessor
另一个ViewProcessor article is here.
谢谢。
【问题讨论】:
标签: java jakarta-ee jersey el jax-rs
如果您想插入对新型模板的支持,则应该实现 ViewProcessor。如果您只需要 JSP 模板,那么这已经内置在 Jersey 中,您无需实现自己的 ViewProcessor。
如果您的 JSP 文件位于 WEB-INF/views 下,那么您可以将 JSP_TEMPLATES_BASE_PATH init 参数设置为 WEB-INF/views。然后,您只需要从您的资源方法中返回一个新的 Viewable 实例(如您所指的 Paul 的博客所示)并将模板名称作为第一个参数和数据(模型)作为第二个参数传递给构造函数。然后在 JSP 中,您可以使用名为“it”的属性访问数据。
更新:如果您的 url 模式是“/*”,它会更复杂一些。 Jersey 在委派给容器时无法解析模板,因为 Jersey servlet 屏蔽了 JSP。为了让容器能够看到 JSP,您还需要做两件事:
如果您仍然认为出于某种原因必须实现自定义 ViewProcessor,您可以查看 freemarker 视图处理器的实现方式并从中获得启发 - 请参阅 http://java.net/projects/jersey/sources/svn/content/trunk/jersey/contribs/jersey-freemarker/src/main/java/com/sun/jersey/freemarker/FreemarkerViewProcessor.java?rev=5453
【讨论】:
<init-param> <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name> <param-value>WEB-INF/views</param-value> </init-param> 和 return new Viewable("welcome",changeList); 以及 WEB-INF/ 中的welcome.jsp 文件意见/welcome.jsp
return new Viewable("/welcome", changeList);