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