Package org.zkoss.zk.fn

## Class JspFns

- java.lang.Object
- - org.zkoss.zk.fn.JspFns

-     public class JspFns
      extends java.lang.Object

  Utilities to generate ZK related information in JSP pages.

  For DSP pages, use `DspFns` instead.
  For ZUML pages, use `ZkFns` instead.

  Since:
    3.5.2
  Author:
    tomyeh

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JspFns()` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static java.lang.String` | `outDeviceCSSContent​(javax.servlet.ServletContext ctx, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String deviceType)` | Generates and returns the complete CSS content of all components in the specified device.
    `static java.lang.String` | `outDeviceJavaScripts​(javax.servlet.ServletContext ctx, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String deviceType)` | Returns HTML tags to include JavaScript files of the specified device for the current application (never null).
    `static java.lang.String` | `outDeviceStyleSheets​(javax.servlet.ServletContext ctx, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String deviceType)` | Returns HTML tags to include style sheets of the specified device for the current application (never null).
    `static java.lang.String` | `outZkHtmlTags​(javax.servlet.ServletContext ctx, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String deviceType)` | Generates and returns the ZK specific HTML tags such as stylesheet and JavaScript.
    `static void` | `setCacheControl​(javax.servlet.http.HttpServletResponse response, java.lang.String prop, int hours)` | Sets the Cache-Control, Expires, and Last-Modified headers for the response.
    `static boolean` | `setCacheControl​(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String prop, int hours)` | Sets the Cache-Control, Expires, and Etag headers for the response.
    `static void` | `setCSSCacheControl​(javax.servlet.http.HttpServletResponse response)` | Sets the Cache-Control, Expires, and Last-Modified headers for the CSS files of class Web resources.
    `static boolean` | `setCSSCacheControl​(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` | Sets the Cache-Control, Expires, and Etag headers for the CSS files of class Web resources.
    `static void` | `setCWRCacheControl​(javax.servlet.http.HttpServletResponse response)` | Sets the Cache-Control, Expires, and Last-Modified headers for class Web resources.
    `static boolean` | `setCWRCacheControl​(javax.servlet.ServletContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` | Sets the Cache-Control, Expires, and Etag headers for class Web resources.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### JspFns

          public JspFns()

  - ### Method Detail

    - #### outZkHtmlTags

          public static java.lang.String outZkHtmlTags​(javax.servlet.ServletContext ctx,
                                                       javax.servlet.http.HttpServletRequest request,
                                                       javax.servlet.http.HttpServletResponse response,
                                                       java.lang.String deviceType)

      Generates and returns the ZK specific HTML tags such as stylesheet and JavaScript. If you want to generate HTML HEAD and BODY tags by yourself in a non-ZUML page (e.g., JSP or DSP), you can invoke this method at the location you want (such as inside the HTML HEAD tag).
      Parameters:
        `deviceType` - the device type. If null, ajax is assumed.
      Returns:
        the string holding the HTML tags, or null if already generated.

    - #### outDeviceCSSContent

          public static java.lang.String outDeviceCSSContent​(javax.servlet.ServletContext ctx,
                                                             javax.servlet.http.HttpServletRequest request,
                                                             javax.servlet.http.HttpServletResponse response,
                                                             java.lang.String deviceType)

      Generates and returns the complete CSS content of all components in the specified device.

      Notice that it generates the content, while `outDeviceStyleSheets(javax.servlet.ServletContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)` generates the HTML tag that will include the content.

      Since:
        5.0.0

    - #### outDeviceStyleSheets

          public static final java.lang.String outDeviceStyleSheets​(javax.servlet.ServletContext ctx,
                                                                    javax.servlet.http.HttpServletRequest request,
                                                                    javax.servlet.http.HttpServletResponse response,
                                                                    java.lang.String deviceType)

      Returns HTML tags to include style sheets of the specified device for the current application (never null).

      This method is used for JSP pages.

      Parameters:
        `deviceType` - the device type. If null, ajax is assumed.

    - #### outDeviceJavaScripts

          public static final java.lang.String outDeviceJavaScripts​(javax.servlet.ServletContext ctx,
                                                                    javax.servlet.http.HttpServletRequest request,
                                                                    javax.servlet.http.HttpServletResponse response,
                                                                    java.lang.String deviceType)

      Returns HTML tags to include JavaScript files of the specified device for the current application (never null).
      Since:
        5.0.0

    - #### setCacheControl

          public static void setCacheControl​(javax.servlet.http.HttpServletResponse response,
                                             java.lang.String prop,
                                             int hours)

      Sets the Cache-Control, Expires, and Last-Modified headers for the response.

      Last-Modified is a "weak" caching header in that the browser applies a heuristic to determine whether to fetch the item from cache or not. Use `setCacheControl(ServletContext, HttpServletRequest, HttpServletResponse, String, int)` instead.

      Parameters:
        `response` - the servlet response (never null)
        `prop` - the name of the property to check if the headers shall be generated. If null, it is always generated. If "false" is specified with this property, this method won't generate anything. In other words, "false" means to disable the cache. If It is used for debugging/developing purpose.
        `hours` - the number of hours the client is allowed to cache the resource
      Since:
        3.6.3
      See Also:
        `setCacheControl(ServletContext, HttpServletRequest, HttpServletResponse, String, int)`

    - #### setCacheControl

          public static boolean setCacheControl​(javax.servlet.ServletContext context,
                                                javax.servlet.http.HttpServletRequest request,
                                                javax.servlet.http.HttpServletResponse response,
                                                java.lang.String prop,
                                                int hours)

      Sets the Cache-Control, Expires, and Etag headers for the response.
      Parameters:
        `context` - the servlet context (never null)
        `request` - the servlet request (never null)
        `response` - the servlet response (never null)
        `prop` - the name of the propery to check if the headers shall be generated. If null, it is always generated. If "false" is specified with this property, this method won't generate anything. In other words, "false" means to disable the cache. If It is used for debugging/developing purpose.
        `hours` - the number of hours the client is allowed to cache the resource
      Returns:
        whether HttpServletResponse.SC_NOT_MODIFIED is set.
      Since:
        5.0.1

    - #### setCSSCacheControl

          public static void setCSSCacheControl​(javax.servlet.http.HttpServletResponse response)

      Sets the Cache-Control, Expires, and Last-Modified headers for the CSS files of class Web resources.

      Last-Modified is a "weak" caching header in that the browser applies a heuristic to determine whether to fetch the item from cache or not. Use `setCSSCacheControl(ServletContext, HttpServletRequest, HttpServletResponse)` instead.

      It first check if `org.zkoss.web.classWebResource.cache` is turned off, and then check how many hours specified in `org.zkoss.web.classWebResource.cache.CSS.hours`. If it is turned off or the value of hours is non-positive, nothing is generated Otherwise, it generates the header with the specified hours (default: 8760).

      Since:
        3.6.3
      See Also:
        `setCWRCacheControl(javax.servlet.http.HttpServletResponse)`, `setCSSCacheControl(ServletContext, HttpServletRequest, HttpServletResponse)`

    - #### setCSSCacheControl

          public static boolean setCSSCacheControl​(javax.servlet.ServletContext context,
                                                   javax.servlet.http.HttpServletRequest request,
                                                   javax.servlet.http.HttpServletResponse response)

      Sets the Cache-Control, Expires, and Etag headers for the CSS files of class Web resources.

      It first check if `org.zkoss.web.classWebResource.cache` is turned off, and then check how many hours specified in `org.zkoss.web.classWebResource.cache.CSS.hours`. If it is turned off or the value of hours is non-positive, nothing is generated Otherwise, it generates the header with the specified hours (default: 8760).

      Returns:
        whether HttpServletResponse.SC_NOT_MODIFIED is set.
      Since:
        5.0.1
      See Also:
        `setCWRCacheControl(ServletContext, HttpServletRequest, HttpServletResponse)`

    - #### setCWRCacheControl

          public static void setCWRCacheControl​(javax.servlet.http.HttpServletResponse response)

      Sets the Cache-Control, Expires, and Last-Modified headers for class Web resources.

      Last-Modified is a "weak" caching header in that the browser applies a heuristic to determine whether to fetch the item from cache or not. Use `setCWRCacheControl(ServletContext, HttpServletRequest, HttpServletResponse)` instead. It checks if `org.zkoss.web.classWebResource.cache` is turned off. If not, it generates the headers.

      Notice that, for the CSS files, please use `setCSSCacheControl(javax.servlet.http.HttpServletResponse)` instead.

      Since:
        3.6.3

    - #### setCWRCacheControl

          public static boolean setCWRCacheControl​(javax.servlet.ServletContext context,
                                                   javax.servlet.http.HttpServletRequest request,
                                                   javax.servlet.http.HttpServletResponse response)

      Sets the Cache-Control, Expires, and Etag headers for class Web resources. It checks if `org.zkoss.web.classWebResource.cache` is turned off. If not, it generates the headers.

      Notice that, for the CSS files, please use `setCSSCacheControl(javax.servlet.http.HttpServletResponse)` instead.

      Returns:
        whether HttpServletResponse.SC_NOT_MODIFIED is set.
      Since:
        5.0.1