在我的jsp中,我使用了4个标记库。声明是:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="cms" uri="/WEB-INF/tags/cms/tag.tld"%>
每个都有一个唯一的前缀。
但是我想为所有这些使用单个前缀,所以我将它们更改为:
<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="cms" uri="/WEB-INF/tags/cms/tag.tld"%>
报告错误。
有没有办法做到这一点?
答案 0 :(得分:1)
您不能在同一JSP中的两个不同标记库中使用相同的标记前缀。标记前缀将指定JSP使用哪个标记库,以及从哪个类文件中使用。对于标签。
每个taglib应该有不同的标记前缀。
答案 1 :(得分:1)
每个taglib指令都在标记库描述符下导入标记,称为 TLD 。 TLD将包含由标记名称标识的标记集。此处的标记名称不是普遍唯一的。 两个TLD可以使用同名的标签。这就是为什么TLD的名称空间只是TLD URI(http://java.sun.com/jsp/jstl/core,http://java.sun.com/jsp/jstl/functions, ...)。
因此,在使用任何标记时,应清楚地告知标记必须加载哪个TLD 。并且,因为在每个标记之前提供URL很困难而且不可读,我们在标记lib指令中使用前缀的帮助为URI提供别名。
因此,您不能为多个TLD提供相同的前缀。