<?xml version="1.0"?>
<document url="./struts-el.xml">
<properties>
<title>Struts EL Extension - Apache Struts</title>
</properties>
<body>
<section href="faq" name="Struts EL Extension"/>

    <section href="Introduction" name="Introduction">

    <p>
        This subproject is an extension of the Struts tag library.  Each JSP custom tag
       in this library is a subclass of an associated tag in the Struts tag library.
       One difference is that this tag library does not use "rtexprvalues", it uses
       the expression evaluation engine in the Jakarta Taglibs implementation of the
       JSP Standard Tag Library (version 1.0) to evaluate attribute values.
    </p>

    <p>
       In addition, some of the Struts tags were not ported to this library, as it was
       determined that their functionality was entirely supplied by the JSTL.  These
       particular Struts tags, and the reason for their non-porting will be described
       in the documentation for this library.
    </p>

    <p>
       In order to fully understand the correct utilization of this library, you must
       understand the use and operation of the Struts tag library, and the use and
       operation of the JavaServer Pages Standard Tag Library (hereafter called the
       "JSTL"), along with the expression language (sometimes called the "EL") used
       for evaluating attribute values.
    </p>

    </section>

       <section href="TagMapping" name="Tag Mapping">

    <p>
       In implementing the Struts-EL library, every Struts tag that provides a feature
       that is not covered by the JSTL (1.0) library is mapped into the Struts-EL
       library.  This section reviews which Struts tags are NOT implemented in the
       Struts-EL library, and which JSTL tags provide that feature.
    </p>

    <p>
       Many of the non-porting decisions were based on the fact that the JSTL
       expression language itself provides the same functionality.  In those cases, in
       addition to a possible JSTL tag name, the symbol "EL" will be listed.
    </p>

    <p>
       <strong> Bean Tag Library Tags NOT Implemented in Struts-EL</strong>
    </p>

    <table>
    <tr><th>Struts Tag</th><th>JSTL Tag</th></tr>
    <tr><td>cookie</td><td>c:set, EL</td></tr>
    <tr><td>define</td><td>c:set, EL</td></tr>
    <tr><td>header</td><td>c:set, EL</td></tr>
    <tr><td>include</td><td>c:import</td></tr>
    <tr><td>parameter</td><td>c:set, EL</td></tr>
    <tr><td>write</td><td> c:out</td></tr>
    </table>

    <p>
       <strong>Bean Tag Library Tags NOT Implemented in Struts-EL</strong>
    </p>

    <table>
    <tr><th>Struts Tag</th><th>JSTL Tag</th></tr>
    <tr><td>empty</td><td>c:if, c:when, EL</td></tr>
    <tr><td>equal</td><td>c:if, c:when, EL</td></tr>
    <tr><td>greaterEqual</td><td>c:if, c:when, EL</td></tr>
    <tr><td>greaterThan</td><td>c:if, c:when, EL</td></tr>
    <tr><td>lessEqual</td><td>c:if, c:when, EL</td></tr>
    <tr><td>lessThan</td><td>c:if, c:when, EL</td></tr>
    <tr><td>notEmpty</td><td>c:if, c:when, EL</td></tr>
    <tr><td>notEqual</td><td>c:if, c:when, EL</td></tr>
    </table>

    <p>
       (Note that the "iterate" tag was originally ported, even with the presence of
       the "c:forEach" tag, as the "indexed tag" functionality was not supported when
       using "c:forEach" instead of "logic:iterate".  This has since been rectified,
       such that the "indexed tag" functionality checks for being contained in a
       "c:forEach" tag, in addition to the "logic:iterate" tag.  However, the ported
       "iterate" tag has not been removed from Struts-EL, for backward compatibility.)
    </p>

    <p>
       <strong>Html Tag Library Tags NOT Implemented in Struts-EL</strong>
    </p>

    <p>
       None (all of them were ported).
    </p>

    </section>

    <section href="AttributeMapping" name="Attribute Mapping">

    <p>
       At this point of the implementation, there is only one change (to two similar
       tags) to the set of attributes between the Struts tags, and the Struts-EL tags.
       The "logic:match" and "logic:notMatch" tags have an additional attribute named
       "expr", which can take any value, and will be used as the value to compare
       against, in addition to the choices of "cookie", "header", "name"/"property",
       and "parameter".
    </p>

    </section>

    <section href="UsageRequirements" name="Usage Requirements">

    <p>
       The Struts-EL tag library requires the use of the Struts tag library, and the
       Java Server Pages Standard Tag Library.  It is not necessary for JSP pages
       using the Struts-EL tag library to also use the Struts tags or the JSTL tags,
       but the Struts and JSTL tag libraries need to be part of the application
       utilizing the Struts-EL tag library.
    </p>

    <p>
       This is because the Struts-EL tag classes are all subclasses of Struts tag
       classes, and their implementation uses classes provided by the JSTL.
    </p>

    </section>

</body></document>
