который оценивается первым мой taglib или jstl? - PullRequest
1 голос
/ 10 октября 2010

Я немного запутался, если какой из них оценивается первым.JSTL или мой пользовательский taglib.

Вот некоторые фрагменты.

<taglib>
   ...
   <tag>
     <name>my_tag</name>
     <tagclass>MyTagLib</tagclass>
     <bodycontent>JSP</bodycontent>
     <attribute>
        <name>attr1</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
     </attribute>
</taglib>

tried to use it in jsp by:
...
pageContext.setAttribute("val", "actualValue");
...
<t:my_tag attr1="${val}"/>

public MyTagLib extends TagSupport{
   private String attr1;
   public void setAttr1( String str ){
       attr1 = str; // this returns "${val}". i was expecting "actualValue".
   }
   ...
}

Интересно, как получить доступ к фактическому значению val?

Ответы [ 2 ]

1 голос
/ 10 октября 2010

Вот статья, которая последовательно решает эту проблему:

http://www.informit.com/articles/article.aspx?p=30946&seqNum=9

Таким образом, по умолчанию атрибуты пользовательского тега не обрабатываются анализатором EL.Если вы хотите, чтобы это было сделано, вам нужно кодировать класс обработчика тега, чтобы сделать это.

Если вы не хотите заниматься этим, вы можете использовать <%= ... %> выражения вместо.

0 голосов
/ 10 октября 2010

Оценка выражений во время выполнения - это то, что позволяет вам оценивать выражения Java внутри <%= ...%> для параметров пользовательских тегов.Если вы используете язык выражений JSTL (EL), вы не используете тег выражений Java.Это два отдельных способа обращения к динамическому содержимому для атрибутов пользовательских тегов.Чтобы использовать JSTL EL, вы должны создать свой пользовательский тег таким образом, чтобы в нем поддерживалась EL.

Для механизма оценки EL проверьте класс org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager в стандартном теге Jakarta

...