# 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.