@Provider public class TemplateEncoder extends Encoder implements javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
HTML 表述生成器。
用于将资源内容,即 Java 对象转换成 HTML 格式的表述。
注意,生成 HTML 格式的表述需要先指定 HTML 模板(*.ftl 文件,FreeMarker 的概念),即 HTML 页面的布局、元素等信息,然后将欲表述的对象内容与之相结合,才能获取 HTML 格式的表述,模板不同,表述的结果也不同。
如下所示,为生成 sampleResource 资源的 HTML 格式表述的过程,其中 sample.ftl 为 sample 资源的模板文件。
Object content = sampleResource.getResourceContent(); TemplateEncoder encoder = new TemplateEncoder(); encoder.setTemplateName("sample.ftl"); Representation entity = templateEncoder.toRepresentation(MediaType.TEXT_HTML, content);
构造器和说明 |
---|
TemplateEncoder()
默认构造函数。
|
TemplateEncoder(ServletConfig servletConfig, HttpServletRequest servletRequest)
构造函数。
|
TemplateEncoder(java.lang.String templateName)
构造函数。
|
限定符和类型 | 方法和说明 |
---|---|
protected java.lang.String |
computeTemplateName(java.lang.Object arg0, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4, javax.ws.rs.core.MultivaluedMap arg5) |
protected java.util.List<Language> |
createSupportedLanguages()
创建支持的语言类型。
|
protected java.util.List<MediaType> |
createSupportedMediaTypes()
创建创建支持的媒体类型。
|
protected Template |
createTemplate(Configuration config, java.lang.String templateName) |
protected ResourceConfigList |
getAllConfigs()
获取上下文中的资源配置信息列表。
|
protected java.lang.String |
getApplicationRootPath()
获取 REST 应用的根目录路径。
|
protected static Configuration |
getConfiguration(java.lang.String character)
获取 Freemarker 的配置的方法,增加浏览器字符集参数。
|
protected static LocLogger |
getLocLogger()
获取本地记录器。
|
protected ResourceManager |
getMessageManager()
获取消息管理器。
|
protected java.util.List<ChildResourceInfo> |
getParentResourceInfos(java.lang.String rootPath, java.lang.String requestURL, java.lang.Class resourceClz)
获取当前请求资源的所有父级资源名与地址的映射。
|
static java.lang.String |
getProductType()
获得产品类型
|
protected Representation |
getRepresentation(MediaType mediaType, java.lang.Object content, java.lang.String templateName) |
protected java.lang.String |
getServletID()
获取 Servlet 名称。
|
long |
getSize(java.lang.Object arg0, java.lang.Class arg1, java.lang.reflect.Type arg2, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4)
确定要写入的对象序列化之后的长度。
|
java.lang.String |
getTemplateName()
获取模板名。
|
boolean |
isWriteable(java.lang.Class arg0, java.lang.reflect.Type arg1, java.lang.annotation.Annotation[] arg2, javax.ws.rs.core.MediaType arg3)
判断本表述生成器是否支持指定媒体类型的表述。
|
void |
setExpectedLanguage(java.lang.String expectedLanguage)
设置期望的语言类型。
|
void |
setExtendedUriInfo(ExtendedUriInfo value) |
void |
setTemplateName(java.lang.String templateName)
设置模板名。
|
protected java.util.List<MediaType> |
supportedMediaTypes(java.lang.String... mediaTypeNames)
支持的媒体类型列表。
|
protected java.lang.String |
templateName(java.lang.annotation.Annotation[] annotations) |
Representation |
toRepresentation(MediaType mediaType, java.lang.Object content)
将资源转化成某种媒体类型的表述。
|
void |
writeTo(java.lang.Object arg0, java.lang.Class arg1, java.lang.reflect.Type arg2, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4, javax.ws.rs.core.MultivaluedMap arg5, java.io.OutputStream arg6)
生成指定媒体类型的 HTTP 响应。
|
getSupportedMediaTypes, isEncodeAllow
public TemplateEncoder()
默认构造函数。
public TemplateEncoder(@Context ServletConfig servletConfig, @Context HttpServletRequest servletRequest)
构造函数。
servletConfig
- Servlet配置信息。servletRequest
- Servlet支持的请求。public TemplateEncoder(java.lang.String templateName)
构造函数。
根据模板名构建 TemplateEncoder 对象。
templateName
- 模板名称。public java.lang.String getTemplateName()
获取模板名。
@Context public void setExtendedUriInfo(ExtendedUriInfo value)
public void setTemplateName(java.lang.String templateName)
设置模板名。
templateName
- 欲设置的模板名称。public Representation toRepresentation(MediaType mediaType, java.lang.Object content)
将资源转化成某种媒体类型的表述。
toRepresentation
在类中 Encoder
mediaType
- 媒体类型。content
- 要转换的内容。protected Representation getRepresentation(MediaType mediaType, java.lang.Object content, java.lang.String templateName)
protected static Configuration getConfiguration(java.lang.String character)
获取 Freemarker 的配置的方法,增加浏览器字符集参数。
protected java.util.List<Language> createSupportedLanguages()
创建支持的语言类型。
用户扩展一个 Encoder 时,需要指定该 Encoder 支持将格式化的对象转换成什么语言的表述。
protected java.util.List<MediaType> createSupportedMediaTypes()
创建创建支持的媒体类型。
createSupportedMediaTypes
在类中 Encoder
public long getSize(java.lang.Object arg0, java.lang.Class arg1, java.lang.reflect.Type arg2, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4)
确定要写入的对象序列化之后的长度。在生成 HTTP 响应之前被调用。
getSize
在接口中 javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
arg0
- 要生成表述的对象。arg1
- 要生成表述的对象对应的 Java 类。arg2
- 要生成表述的对象的类型。arg3
- 注记数组,资源中有这些注记的方法返回要写入的对象。arg4
- HTTP 请求体的媒体类型。public boolean isWriteable(java.lang.Class arg0, java.lang.reflect.Type arg1, java.lang.annotation.Annotation[] arg2, javax.ws.rs.core.MediaType arg3)
判断本表述生成器是否支持指定媒体类型的表述。
isWriteable
在接口中 javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
arg0
- 要生成表述的对象。arg1
- 指定的媒体类型。arg2
- 注记数组,资源中有这些注记的方法返回要写入的对象。arg3
- 预期响应的媒体类型。public void writeTo(java.lang.Object arg0, java.lang.Class arg1, java.lang.reflect.Type arg2, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4, javax.ws.rs.core.MultivaluedMap arg5, java.io.OutputStream arg6) throws java.io.IOException, javax.ws.rs.WebApplicationException
生成指定媒体类型的 HTTP 响应。
writeTo
在接口中 javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
arg0
- 要生成表述的对象。arg1
- 要生成表述的对象对应的 Java 类。arg2
- 要生成表述的对象的类型。arg3
- 注记数组,资源中有这些注记的方法返回要写入的对象。arg4
- HTTP 响应的媒体类型。arg5
- HTTP 响应的消息头。arg6
- HTTP 响应。java.io.IOException
- 当读写过程出错时。javax.ws.rs.WebApplicationException
- 当 HTTP 响应出错时。protected java.lang.String computeTemplateName(java.lang.Object arg0, java.lang.annotation.Annotation[] arg3, javax.ws.rs.core.MediaType arg4, javax.ws.rs.core.MultivaluedMap arg5)
protected Template createTemplate(Configuration config, java.lang.String templateName)
protected java.lang.String templateName(java.lang.annotation.Annotation[] annotations)
protected java.util.List<ChildResourceInfo> getParentResourceInfos(java.lang.String rootPath, java.lang.String requestURL, java.lang.Class resourceClz)
获取当前请求资源的所有父级资源名与地址的映射。
rootPath
- REST 应用的资源根目录。requestURL
- 请求 URI。resourceClz
- 请求的资源的实现类。protected ResourceConfigList getAllConfigs()
获取上下文中的资源配置信息列表。
protected java.lang.String getServletID()
获取 Servlet 名称。
protected java.lang.String getApplicationRootPath()
获取 REST 应用的根目录路径。
protected static LocLogger getLocLogger()
获取本地记录器。
protected ResourceManager getMessageManager()
获取消息管理器。
public void setExpectedLanguage(java.lang.String expectedLanguage)
设置期望的语言类型。
expectedLanguage
-protected java.util.List<MediaType> supportedMediaTypes(java.lang.String... mediaTypeNames)
支持的媒体类型列表。
mediaTypeNames
- 媒体类型名称。public static java.lang.String getProductType()