# Class ELInterpreterTagSetters

java.lang.Object
org.apache.jasper.optimizations.ELInterpreterTagSetters

All Implemented Interfaces:
  `ELInterpreter`

public class ELInterpreterTagSetters extends Object implements ELInterpreter
A non-specification compliant `ELInterpreter` that optimizes a subset of setters for tag attributes.

The cases optimized by this implementation are:

- expressions that are solely a literal boolean
- expressions that are solely a constant string used (with coercion where necessary) with a setter that accepts:
- - boolean / Boolean
  - char / Character
  - BigDecimal
  - long / Long
  - int / Integer
  - short / Short
  - byte / Byte
  - double / Double
  - float / Float
  - BigInteger
  - Enum
  - String

The specification compliance issue is that it essentially skips the first three `ELResolver`s listed in section JSP.2.9 and effectively hard codes the use of the 4th `ELResolver` in that list.

See Also:
  - "https://bz.apache.org/bugzilla/show_bug.cgi?id=64872"

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ELInterpreterTagSetters()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `interpreterCall(JspCompilationContext context, boolean isTagFile, String expression, Class<?> expectedType, String fnmapvar)`
  Returns the string representing the code that will be inserted into the servlet generated for JSP.

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

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

- ## Constructor Details

  - ### ELInterpreterTagSetters

    public ELInterpreterTagSetters()

- ## Method Details

  - ### interpreterCall

    public String interpreterCall(JspCompilationContext context, boolean isTagFile, String expression, Class<?> expectedType, String fnmapvar)
    Description copied from interface: `ELInterpreter`
    Returns the string representing the code that will be inserted into the servlet generated for JSP. The default implementation creates a call to `PageContextImpl.proprietaryEvaluate(String, Class, jakarta.servlet.jsp.PageContext, org.apache.jasper.runtime.ProtectedFunctionMapper)` but other implementations may produce more optimised code.
    Specified by:
      `interpreterCall` in interface `ELInterpreter`
    Parameters:
      `context` - The compilation context
      `isTagFile` - `true` if in a tag file rather than a JSP
      `expression` - a String containing zero or more "${}" expressions
      `expectedType` - the expected type of the interpreted result
      `fnmapvar` - Variable pointing to a function map.
    Returns:
      a String representing a call to the EL interpreter.