【发布时间】:2014-06-22 05:23:46
【问题描述】:
你正在制作一个自定义标签库并定义了一个属性:
test.tag:
<%@ attribute name="variableName" required="false" type="java.lang.String" %>
${variableName}
并有一个班级:
Test.java
public class Test {
public String getVariableName() {...};
public List<Test> getTests() {...};
}
最后是一个jsp:
<s:iterator value="getTests">
<t:test />
</s:iterator>
虽然您没有在 <t:test /> 标记中指定变量名称,但该标记正在从 Test 对象中获取 variableName 的值,因为它恰好共享相同的变量名称。
如何避免这种命名空间冲突?
【问题讨论】:
-
我查看了 JSTL、struts 和 cewolf(一个图形/图表标签库)的源代码,它们似乎都在 Java 类中实现了它们的标签,而不是作为 .tag 文件。我认为出于性能原因这是最好的,但在将库实现为 .tag 文件时,我仍然对正确的方法感兴趣。
标签: jsp custom-tags