首先评估我的taglib或jstl?

时间:2010-10-10 06:53:17

标签: java jsp jstl taglib

如果首先评估哪一个,我有点困惑。 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 个答案:

答案 0 :(得分:1)

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

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

总之,默认情况下,EL评估程序不会处理自定义标记的属性。如果要完成此操作,则需要对标记处理程序类进行编码以执行此操作。

如果您不想再这样做,可以改用<%= ... %>表达式。

答案 1 :(得分:0)

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

对于EL评估机制,请查看Jakarta Standard Taglib中的课程org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager