1

如果首先评估哪个,我有点困惑。jstl 或我的自定义标记库。

这是一些片段。

<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 的实际值?

4

2 回答 2

1

这是一篇以连贯方式解决此问题的文章:

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

总之,默认情况下,EL 评估器不会处理自定义标签的属性。如果您希望这样做,您需要编写标记处理程序类来执行此操作。

如果您不想这样做,您可以使用<%= ... %>表达式来代替。

于 2010-10-10T07:44:33.180 回答
0

运行时表达式评估允许您在内部<%= ...%>为自定义标记参数评估 Java 表达式。如果使用 JSTL 表达式语言 (EL),则不使用 Java 表达式标记。它们是引用自定义标签属性的动态内容的两种不同方式。要使用 JSTL EL,您必须构建您的自定义标签,使其支持 EL。

对于 EL 评估机制,请查看org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManagerJakarta Standard Taglib 中的类

于 2010-10-10T07:00:32.127 回答