我正在使用grails并希望在项目中使用内部自定义JSP taglib。有谁知道如何做到这一点?我已经看到了让其他jsp taglib工作的参考,但如果你自己编写它们就没有。我在lib文件夹中有一个名为'common-view.jar'的jar文件,并尝试使用此代码来引用它:
<%@ taglib uri="${createLinkTo(dir:'lib',file:'common-view.jar')}" prefix="cas_common" %>
然后在我使用的代码中:
<cas_common:body>${career.jobSections.sectionWorkActivities}</cas_common:body>
我明白了:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Could not parse script
非常感谢任何帮助。
马特
答案 0 :(得分:1)
修改“web-app / WEB-INF / tld / grails.tld”文件并添加指向您班级的必要条目:
<tag>
<name>includeJs</name>
<tag-class>com.mycompany.taglib.IncludeJsTag</tag-class>
<body-content>JSP</body-content>
<variable>
<name-given>it</name-given>
<variable-class>java.lang.Object</variable-class>
<declare>true</declare>
<scope>AT_BEGIN</scope>
</variable>
<dynamic-attributes>true</dynamic-attributes>
</tag>
将common-view.jar
放在lib目录中。它应该准备好了!
注意:关于名称空间 - 在GSP中,我认为全局g:名称空间可用于引用上面的标记。
有关更多信息,请查看此页面 - 它有点难以提炼,但如果您已经完成了jsp / servlets,那应该是非常容易理解的。 http://grails.org/Dynamic+Tag+Libraries
编辑:我能够从上面的doco页面中提取更多信息:http://jira.codehaus.org/browse/GRAILS-4571。基本上,您可以将标记声明添加到grails.tld或您自己的(如果您使用grails.tld,您不需要在使用该标记的页面上声明taglib(即<%@ taglib prefix="jct" uri="/WEB-INF/tld/jsp-custom-tags.tld"%>
)。确保包含taglib的jar在classspath中。将它放在/ lib /中会很好用。