20.3. 绝对 vs. 相对模块引用
如在上一节讨论 @Template 和 Viewable 可提供的方式来定义一个参考模板。现在我们将讨论如何将这些值解释和如何发现具体的模板。
20.3.1. 相对模块引用
相对引用是指任何路径不以 ‘/‘字符开头 (如 index.foo)。这种类型的引用,将会通过前面加上最后匹配的完全名字的值来转为绝对路径。
考虑Example 20.3, “Using @Template on a resource class”,模板名称引用 index 是一个相对值,Jersey 将会使用完全匹配的类名称 Foo 来转为绝对模板引用(更多详见 Viewable),我们的例子:
“/com/foo/Foo/index”
Jersey 将会搜索所有的注册的模板处理器(见 20.7. Writing Custom Templating Engines)来找到可以转为绝对模板引用的模板处理器。如果这样的模板处理器找到了,那么可以被“处理”的模板将会使用提供的数据模型来处理。
注意:如果不提供或空的模板参考(无论是在 Viewable 或通过 @Template)那么假设为 index 引用,对这个值的所有进一步的处理是这一价值。
20.3.2. 绝对模板引用
修改我们的 Foo 资源
Example 20.4. Using absolute path to template in Viewable
@GET
public Viewable get() {
return new Viewable("/index", "FOO");
}
这个例子,模板引用是以 “/“ 开头,所以无需进行绝对化,就已经是绝对引用了。
绝对模板引用以 “/“ 字符开头,(如 /com/example/index.foo) ,无需再做转换,就能通过提供的路径找到模板。
注意,然而,对于自定义模板引擎的模板处理器可以修改(和支持)绝对模板引用通过在前面添加‘基模板路径’(如果定义)而后添加模板后缀(如 foo)如果后缀不提供在引用中。
例如,假设我们想用 Mustache 模板给我们的页面,我们定义了‘基模板路径’作为页面。那么绝对模板引用 /com/example/Foo/index 模板处理器将会将引用转换成以下路径:/pages/com/example/Foo/index.mustache.