Hello!

I am trying to decorate one base-template mit varying extra-functionality. For example one listing of objects, with different additional informations, depending on the access rights granted to the user.

My idea was, to use a nested anonymous definition, which pics up a page-context variable via an EL-expression. Here is a simplified version, of what I have put together:

The definition:
--------------------
  <definition name="list" template="/WEB-INF/templates/list.jsp">
    <put-attribute name="dynamic">
      <definition template="/WEB-INF/templates/dynamic.jsp">
        <put-attribute name="var" expression="${i}"/>
      </definition>
    </put-attribute>
  </definition>
---------------------

list.jsp:
---------------------
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" session="false" %>
<%@taglib uri="http://tiles.apache.org/tags-tiles"; prefix="t" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
<html>
  <head><title>test</title></head>
  <body>
    <ul>
      <c:forEach var="i" begin="1" end="10" step="1">
        <li><em>Loop #${i}:</em><t:insertAttribute name="dynamic"/></li>
      </c:forEach>
    </ul>
  </body>
</html>
---------------------

dynamic.jsp:
---------------------
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" session="false" %>
<%@taglib uri="http://tiles.apache.org/tags-tiles"; prefix="t" %>
<t:importAttribute name="var" toName="x" ignore="true"/>
Dynamic variable in nested definition: <strong>${x}</strong>
---------------------

The problem ist:
The EL-expression ${i} does not pick up the variable from the page-scope!


If I push the variable to request-scope with an <c:set var="i" value="${i}" scope="request"/> inside the <c:forEach>-loop, everything works fine. But that would polute the "global namespace" and might therefore lead to other hard to find errors later on. Besides, using the EL-expression would be pretty pointless than, because the variable is visible in the nested definition anyway.


Am I missing something, is this a bug, or why is it not possible to pick up variables from page-scope via EL-expressions in definitions?


Greetings Kai

Reply via email to