2009-09-24 54 views
2

我正在使用grails并希望在项目中使用内部自定义JSP taglib。有谁知道如何做到这一点?我已经看到了引用其他jsp taglibs的工作原理,但如果您自己编写了它们,则不会。我所说的JAR文件“共view.jar” lib文件夹中,并试图将此代码来引用它:Grails - 使用自定义JSP taglib

<%@ 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 

任何帮助非常感谢。

马特

回答

1

修改 “web应用/ 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"%>)。确保你的jar包含这个taglib在classspath中,把它放在/ lib /中会很好用

+0

谢谢你的回答,但我得到:2009-09-28 13:49:19,636 ERROR [errors.GrailsExceptionResolver]错误处理GroovyPageView:Tag [cascaidBody]不存在,没有找到名称空间的标签库:g 当我尝试并使用它时。 – Matt 2009-09-28 13:05:00

+0

您应该发布您的grails.tld文件以进行诊断 – Chii 2009-10-01 10:43:21