编程语言
首页 > 编程语言> > java – 在传递给JSP Tag Handler之前评估变量

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