java – 在传递给JSP Tag Handler之前评估变量
作者:互联网
在尝试使用自定义JSP标记库时,我在JSP中定义了一个变量,我想在传递给标记库之前对其进行评估.但是,我似乎无法让它发挥作用.这是我的JSP的简化版本:
<% int index = 8; %>
<foo:myTag myAttribute="something_<%= index %>"/>
我的TagHandler的doStartTag()方法使用pageContext的输出流根据输入的属性进行写入:
public int doStartTag() {
...
out.println("Foo: " + this.myAttribute);
}
但是,我在最终标记中看到的输出是:
Foo: something_<%= index %>
而不是我想要的:
Foo: something_8
我对该属性的标记库定义是:
<attribute>
<name>myAttribute</name>
<required>true</required>
</attribute>
我试图用rtexprvalue配置属性true和false,但都没有工作.有没有办法可以配置属性,以便在发送给Handler之前对其进行评估?或者我是否完全错了?
我对JSP标签比较新,所以我愿意接受解决这个问题的替代方案.另外,我意识到在JSP中使用scriptlet是不受欢迎的,但是我在这里使用了一些遗留代码,所以我现在有点困惑.
编辑:
我也尝试过:
<foo:myTag myAttribute="something_${index}"/>
这也不起作用 – 只输出一些_ ${index}.
解决方法:
我不相信你可以使用<%= ...%>在自定义标记的属性中,除非您的<%= ...%>是属性值的全部内容.以下是否适合您?
<% int index = 8; %>
<% String attribValue = "something_" + index; %>
<foo:myTag myAttribute="<%= attribValue %>"/>
编辑:我相信<%...%>自定义标记属性中只能包含变量名称.不是任何Java表达式.
标签:jsp-tags,java,jsp 来源: https://codeday.me/bug/20190726/1548088.html