Class ThymeleafViewRenderer

java.lang.Object
org.apache.juneau.rest.server.view.thymeleaf.ThymeleafViewRenderer
All Implemented Interfaces:
ResponseProcessor, ViewRenderer

public class ThymeleafViewRenderer extends Object implements ViewRenderer
ResponseProcessor that detects ThymeleafView-typed return values and asks the configured TemplateEngine to render them directly onto the response writer.

Auto-registered by ThymeleafMixin via @Rest(responseProcessors=...) — callers who add the mixin don't need to wire up this class explicitly. Callers who want to handle ThymeleafView returns without adopting the mixin can add this class to their own responseProcessors list.

Behavior:
  1. Inspect the response content. If the value is not a ThymeleafView, return NEXT so the rest of the chain runs.
  2. Read the active ThymeleafMixin from the RestContext bean store to discover the TemplateEngine (lazy default if no engine bean is registered).
  3. Build a Thymeleaf Context populated with the view's attribute map.
  4. Apply every entry from ThymeleafView.getResponseHeaders() via res.setHeader(...).
  5. Default Content-Type to text/html;charset=UTF-8 if the caller did not set one explicitly (Thymeleaf's HTML template mode emits HTML; an explicit caller header wins).
  6. Call templateEngine.process(view.getTemplateName(), context, res.getWriter()) to stream the rendered output.
  7. When no Thymeleaf engine is on the classpath, the TemplateEngine-typed import here fails to load at first use and surfaces NO_ENGINE_DIAGNOSTIC naming the missing dependency.
See Also:
Since:
10.0.0
  • Field Details

    • DEFAULT_CONTENT_TYPE

      public static final String DEFAULT_CONTENT_TYPE
      Default Content-Type applied when the view does not specify one explicitly.
      See Also:
    • NO_ENGINE_DIAGNOSTIC

      public static final String NO_ENGINE_DIAGNOSTIC
      Diagnostic message emitted when no Thymeleaf engine can be found on the classpath at render-time.

      Public so tests and consumer apps can pattern-match against the message text without depending on internal string literals.

      See Also:
  • Constructor Details

  • Method Details

    • process

      public int process(RestOpSession opSession) throws IOException, BasicHttpException
      Description copied from interface: ResponseProcessor
      Process this response if possible.
      Specified by:
      process in interface ResponseProcessor
      Parameters:
      opSession - The HTTP call.
      Returns:
      One of the following codes:
      • 0 - The processor could not handle the request.
      • 1 - The processor was able to fully handle the request.
      • 2 - The processor was able to partially handle the request by replacing the output. The response processors should start over.
      Throws:
      IOException - If low-level exception occurred on output stream.
      Results in a HttpServletResponse.SC_INTERNAL_SERVER_ERROR error.
      BasicHttpException - If some other exception occurred.
      Can be used to provide an appropriate HTTP response code and message.