TagPluginContext (Apache Tomcat 10.0.20 API Documentation)

Package org.apache.jasper.compiler.tagplugin

## Interface TagPluginContext

-     public interface TagPluginContext

  This interface allows the plugin author to make inquiries about the properties of the current tag, and to use Jasper resources to generate direct Java codes in place of tag handler invocations.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `dontUseTagPlugin()` | Abandon optimization for this tag handler, and instruct Jasper to generate the tag handler calls, as usual.
    `void` | `generateAttribute​(String attribute)` | Generate codes to evaluate value of a attribute in the custom tag The codes is a Java expression.
    `void` | `generateBody()` | Generate codes for the body of the custom tag
    `void` | `generateDeclaration​(String id, String text)` | Generate a declaration in the of the generated class.
    `void` | `generateImport​(String s)` | Generate an import statement
    `void` | `generateJavaSource​(String s)` | Generate Java source code scriptlet
    `String` | `getConstantAttribute​(String attribute)` |
    `TagPluginContext` | `getParentContext()` | Get the PluginContext for the parent of this custom tag.
    `Object` | `getPluginAttribute​(String attr)` | Get the value of an attribute in the current tagplugin context.
    `String` | `getTemporaryVariableName()` |
    `boolean` | `isAttributeSpecified​(String attribute)` |
    `boolean` | `isConstantAttribute​(String attribute)` |
    `boolean` | `isScriptless()` |
    `boolean` | `isTagFile()` | Is the tag being used inside a tag file?
    `void` | `setPluginAttribute​(String attr, Object value)` | Associate the attribute with a value in the current tagplugin context.

- - ### Method Detail

    - #### isScriptless

          boolean isScriptless()

      Returns:
        true if the body of the tag is scriptless.

    - #### isAttributeSpecified

          boolean isAttributeSpecified​(String attribute)

      Parameters:
        `attribute` - Name of the attribute
      Returns:
        true if the attribute is specified in the tag

    - #### getTemporaryVariableName

          String getTemporaryVariableName()

      Returns:
        A unique temporary variable name that the plugin can use.

    - #### generateImport

          void generateImport​(String s)

      Generate an import statement
      Parameters:
        `s` - Name of the import class, '*' allowed.

    - #### generateDeclaration

          void generateDeclaration​(String id,
                                   String text)

      Generate a declaration in the of the generated class. This can be used to declare an inner class, a method, or a class variable.
      Parameters:
        `id` - A unique ID identifying the declaration. It is not part of the declaration, and is used to ensure that the declaration will only appear once. If this method is invoked with the same id more than once in the translation unit, only the first declaration will be taken.
        `text` - The text of the declaration.

    - #### generateJavaSource

          void generateJavaSource​(String s)

      Generate Java source code scriptlet
      Parameters:
        `s` - the scriptlet (raw Java source)

    - #### isConstantAttribute

          boolean isConstantAttribute​(String attribute)

      Parameters:
        `attribute` - The attribute name
      Returns:
        true if the attribute is specified and its value is a translation-time constant.

    - #### getConstantAttribute

          String getConstantAttribute​(String attribute)

      Parameters:
        `attribute` - The attribute name
      Returns:
        A string that is the value of a constant attribute. Undefined if the attribute is not a (translation-time) constant. null if the attribute is not specified.

    - #### generateAttribute

          void generateAttribute​(String attribute)

      Generate codes to evaluate value of a attribute in the custom tag The codes is a Java expression. NOTE: Currently cannot handle attributes that are fragments.
      Parameters:
        `attribute` - The specified attribute

    - #### generateBody

          void generateBody()

      Generate codes for the body of the custom tag

    - #### dontUseTagPlugin

          void dontUseTagPlugin()

      Abandon optimization for this tag handler, and instruct Jasper to generate the tag handler calls, as usual. Should be invoked if errors are detected, or when the tag body is deemed too complicated for optimization.

    - #### getParentContext

          TagPluginContext getParentContext()

      Get the PluginContext for the parent of this custom tag. NOTE: The operations available for PluginContext so obtained is limited to getPluginAttribute and setPluginAttribute, and queries (e.g. isScriptless(). There should be no calls to generate*().
      Returns:
        The pluginContext for the parent node. null if the parent is not a custom tag, or if the pluginContext if not available (because useTagPlugin is false, e.g).

    - #### setPluginAttribute

          void setPluginAttribute​(String attr,
                                  Object value)

      Associate the attribute with a value in the current tagplugin context. The plugin attributes can be used for communication among tags that must work together as a group. See <c:when> for an example.
      Parameters:
        `attr` - The attribute name
        `value` - The attribute value

    - #### getPluginAttribute

          Object getPluginAttribute​(String attr)

      Get the value of an attribute in the current tagplugin context.
      Parameters:
        `attr` - The attribute name
      Returns:
        the attribute value

    - #### isTagFile

          boolean isTagFile()

      Is the tag being used inside a tag file?
      Returns:
        `true` if inside a tag file