如何创建以属性为变量的自定义标签?

How to create a custom tag with attribute as variable?

我知道如何创建具有类似属性的自定义标签:

<my-prefix:mytag count = "5">
content
</my-prefix:mytag>

但我不知道如何创建自定义标签,其属性为变量,如 JSP 核心标签库中的 <c:set> 标签。 类似于:

<my-prefix:mytag my-var="count-loop" count = "5">
content
</my-prefix:mytag>

然后我可以使用:

${count-loop} => output "5"

我相信你已经阅读了 Custom Tags in JSP Pages 教程,所以你知道如何声明标签属性和处理程序。然后,提示你的属性是myVarcount,你有相应的字段(String myVarint count)和setter(void setMyVar(String myVar)void setCount(int count) ) 在你的处理程序中,你需要做的就是在处理程序的 doTag() 方法中添加一个页面上下文属性:

public void doTag() throws JspException, IOException {
  // ...
  getJspContext().setAttribute(myVar, count);
  // ...
}

你可以在 EL 标签后使用它,所以

<my-prefix:mytag myVar="count-loop" count="5"></my-prefix:mytag>
Count: ${count-loop}

将产生以下输出:

Count: 5