com.supermap.services.rest.encoders

类 TemplateEncoder

  • 所有已实现的接口:
    javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
    直接已知子类:
    AjaxEncoder, Flash3DEncoder, FlexEncoder, LeafletEncoder, OpenLayersEncoder, SceneRealspaceEncoder, SuperMapCloudEncoder, SwaggerUIEncoder, TianDiTuEncoder, VectorTileEncoder


    @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 响应。
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • TemplateEncoder

        public TemplateEncoder()
        

        默认构造函数。

      • TemplateEncoder

        public TemplateEncoder(@Context
                       ServletConfig servletConfig,
                       @Context
                       HttpServletRequest servletRequest)
        

        构造函数。

        参数:
        servletConfig - Servlet配置信息。
        servletRequest - Servlet支持的请求。
      • TemplateEncoder

        public TemplateEncoder(java.lang.String templateName)
        

        构造函数。

        根据模板名构建 TemplateEncoder 对象。

        参数:
        templateName - 模板名称。
    • 方法详细资料

      • getTemplateName

        public java.lang.String getTemplateName()
        

        获取模板名。

        返回:
        模板名称。
      • setExtendedUriInfo

        @Context
        public void setExtendedUriInfo(ExtendedUriInfo value)
        
      • setTemplateName

        public void setTemplateName(java.lang.String templateName)
        

        设置模板名。

        参数:
        templateName - 欲设置的模板名称。
      • toRepresentation

        public Representation toRepresentation(MediaType mediaType,
                                      java.lang.Object content)
        

        将资源转化成某种媒体类型的表述。

        指定者:
        toRepresentation 在类中 Encoder
        参数:
        mediaType - 媒体类型。
        content - 要转换的内容。
        返回:
        资源的表述。
      • getRepresentation

        protected Representation getRepresentation(MediaType mediaType,
                                       java.lang.Object content,
                                       java.lang.String templateName)
        
      • getConfiguration

        protected static Configuration getConfiguration(java.lang.String character)
        

        获取 Freemarker 的配置的方法,增加浏览器字符集参数。

        返回:
        Freemarker 配置信息。
      • createSupportedLanguages

        protected java.util.List<Language> createSupportedLanguages()
        

        创建支持的语言类型。

        用户扩展一个 Encoder 时,需要指定该 Encoder 支持将格式化的对象转换成什么语言的表述。

        返回:
        支持的语言类型列表。
      • createSupportedMediaTypes

        protected java.util.List<MediaType> createSupportedMediaTypes()
        

        创建创建支持的媒体类型。

        指定者:
        createSupportedMediaTypes 在类中 Encoder
        返回:
        支持的媒体类型列表。
      • getSize

        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 请求体的媒体类型。
        返回:
        要写入的对象的长度。
      • isWriteable

        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 - 预期响应的媒体类型。
        返回:
        如果本表述生成器支持指定的媒体类型,则返回 true,否则返回 false。
      • writeTo

        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 响应出错时。
      • computeTemplateName

        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)
        
      • createTemplate

        protected Template createTemplate(Configuration config,
                              java.lang.String templateName)
        
      • templateName

        protected java.lang.String templateName(java.lang.annotation.Annotation[] annotations)
        
      • getParentResourceInfos

        protected java.util.List<ChildResourceInfo> getParentResourceInfos(java.lang.String rootPath,
                                                               java.lang.String requestURL,
                                                               java.lang.Class resourceClz)
        

        获取当前请求资源的所有父级资源名与地址的映射。

        参数:
        rootPath - REST 应用的资源根目录。
        requestURL - 请求 URI。
        resourceClz - 请求的资源的实现类。
        返回:
        当前请求的资源的所有父级资源的信息列表。
      • getAllConfigs

        protected ResourceConfigList getAllConfigs()
        

        获取上下文中的资源配置信息列表。

        返回:
        资源配置信息列表。
      • getServletID

        protected java.lang.String getServletID()
        

        获取 Servlet 名称。

        返回:
        Servlet 名称。
      • getApplicationRootPath

        protected java.lang.String getApplicationRootPath()
        

        获取 REST 应用的根目录路径。

        返回:
        REST 应用的根目录。
      • getLocLogger

        protected static LocLogger getLocLogger()
        

        获取本地记录器。

        返回:
        本地记录器。
      • getMessageManager

        protected ResourceManager getMessageManager()
        

        获取消息管理器。

        返回:
      • setExpectedLanguage

        public void setExpectedLanguage(java.lang.String expectedLanguage)
        

        设置期望的语言类型。

        参数:
        expectedLanguage -
      • supportedMediaTypes

        protected java.util.List<MediaType> supportedMediaTypes(java.lang.String... mediaTypeNames)
        

        支持的媒体类型列表。

        参数:
        mediaTypeNames - 媒体类型名称。
        返回:
        媒体类型列表。
      • getProductType

        public static java.lang.String getProductType()
        
        获得产品类型
        返回:
        iServer、iPortal、iExpress