1

どちらが先に評価されるのか、ちょっと混乱します。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 の実際の値にアクセスする方法を教えてください。

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 式タグを使用しません。これらは、カスタム タグ属性の動的コンテンツを参照する 2 つの別々の方法です。JSTL EL を使用するには、EL サポートが含まれるようにカスタム タグを作成する必要があります。

EL 評価メカニズムについてはorg.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager、Jakarta Standard Taglib のクラスを確認してください。

于 2010-10-10T07:00:32.127 に答える