2009-09-24 104 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