我的 TagHandle-6ren">
gpt4 book ai didi

java - 在传递给 JSP 标记处理程序之前评估变量

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:02 26 4
gpt4 key购买 nike

当尝试使用自定义 JSP 标记库时,我在 JSP 中定义了一个变量,我想在将其传递到标记库之前对其进行评估。但是,我似乎无法让它工作。这是我的 JSP 的简化版本:

<% int index = 8; %>

<foo:myTag myAttribute="something_<%= index %>"/>

我的 TagHandlerdoStartTag() 方法使用 pageContext 的输出流根据输入的属性进行写入:

public int doStartTag() {
...
out.println("Foo: " + this.myAttribute);
}

但是,我在最终标记中看到的输出是:

Foo: something_<%= index %>

而不是我想要的:

Foo: something_8

我的属性标签库定义是:

<attribute>
<name>myAttribute</name>
<required>true</required>
</attribute>

我已尝试使用 rtexprvalue 配置属性 truefalse,但均无效。有没有一种方法可以配置属性,以便在将其发送到处理程序之前对其进行评估?还是我的做法完全错了?

我对 JSP 标记比较陌生,所以我愿意接受解决此问题的替代方法。此外,我意识到在 JSP 中使用 scriptlet 是不受欢迎的,但我在这里使用一些遗留代码,所以我现在有点坚持使用它。

编辑:

我也试过:

<foo:myTag myAttribute="something_${index}"/>

这也不起作用 - 它只是输出 something_${index}

最佳答案

我不相信你可以使用 <%= ... %>在自定义标记的属性中,除非您的 <%= ... %>是属性值的全部内容。以下对您有用吗?

<% int index = 8; %>
<% String attribValue = "something_" + index; %>

<foo:myTag myAttribute="<%= attribValue %>"/>

编辑:我相信 <% ... %>自定义标签属性内只能包含一个变量名。不是任何 Java 表达式。

关于java - 在传递给 JSP 标记处理程序之前评估变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/787434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com