【问题标题】:which is evaluated first my taglib or jstl?我的 taglib 或 jstl 首先评估哪个?
【发布时间】:2010-10-10 06:53:16
【问题描述】:

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

这是一些sn-ps。

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

【问题讨论】:

  • 您可能需要在您的 jsp 上启用 EL 支持。你用的是哪个版本的jsp服务器?以及哪个应用服务器?

标签: java jsp jstl taglib


【解决方案1】:

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

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

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

如果你不想费心做这件事,你可以改用&lt;%= ... %&gt; 表达式。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多