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