EL выражения в определении плитки Apache не обрабатываются - PullRequest
5 голосов
/ 19 августа 2011

Я использую плитки Apache для шаблонов, и часть шаблона представляет собой текст заголовка. Этот текст зависит от раздела, к которому принадлежит страница. Каждая страница содержит бин, а текст заголовка создается с использованием свойств этого бина. Боб будет иметь другое имя для каждой страницы. Итак, в моем файле JSP у меня будет что-то вроде этого:

<div>${myBean.id} - ${myBean.name}</div>

Я хочу получить это выражение в определении тайла, и я попробовал это:

<definition template="/WEB-INF/tiles/layout/mytemplate.jsp">
  <put-attribute name="title" expression="${myBean.id} - ${myBean.name}" />
</definition>

А в шаблоне я делаю:

<div class="title-header"><tiles:insertAttribute name="title" /></div>

Но результатом является необработанное выражение EL:

<div>${myBean.id} - ${myBean.name}</div>

Код был упрощен, чтобы сделать этот пост кратким, но это именно то, что я пытаюсь сделать. Есть также причины, почему я пытаюсь сделать это таким образом.

Есть идеи, почему выражение EL не обрабатывается?

Спасибо

ПРИМЕЧАНИЕ: я довольно плохо знаком с JSP и Apache Tiles, поэтому, возможно, я не использовал правильную терминологию.

1 Ответ

6 голосов
/ 04 декабря 2011

Я просто хотел указать, что ответ Барри (в своем комментарии к оригинальному сообщению) помог мне.Вам нужно иметь tiles-el.jar на вашем пути к классам (если вы хотите использовать стандартный EL; возможно, вам нужны соответствующие JAR для MVEL или OGNL).

Tiles 2. Относительно AttributeEvaluator вот как это можно настроить, если вы используете Spring:

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/**/views.xml</value>
        </list>
    </property>

    <!-- Initialize expression language support for use in Tiles definitions. -->
    <property name="tilesProperties">
        <props>
            <prop key="org.apache.tiles.evaluator.AttributeEvaluator">org.apache.tiles.evaluator.el.ELAttributeEvaluator</prop>
        </props>
    </property>        
</bean>

Tiles 3. Spring's TilesConfigurer для Tiles 3 автоматически проверяет путь к классам для JSP API 2.1и Плитка EL JAR.Если он находит их обоих, он автоматически создает анализатор атрибутов с учетом EL.

...