2017-11-29 8 views
0

興味深い問題があります...アプリケーションにJSPタグを追加しようとしています。私はfunctions.tld/WEB-INF/tags/に保存しましたが、エラーメッセージIllegal TLD path /WEB-INF/tags/functions.tld, must not start with "/WEB-INF/tags"が出てきましたので、移動しようとしました/WEB-INF/これはTag file directory /WEB-INF/functions.tld does not start with "/WEB-INF/tags"です。だから私はどこに置くのですか?タグファイルディレクトリ/WEB-INF/functions.tldが "/ WEB-INF/tags"で始まらない

TLDファイル

<?xml version="1.0" encoding="UTF-8"?> 
<taglib xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
     version="2.1"> 

    <tlib-version>1.0</tlib-version> 
    <short-name>my</short-name> 

    <!-- Invoke 'Generate' action to add tags or functions --> 
    <function> 
     <name>urlencode</name> 
     <function-class>library.StringUtils</function-class> 
     <function-signature>java.lang.String urlencode(java.lang.String)</function-signature> 
    </function> 

</taglib> 

JSPファイル

<%@ taglib prefix="f" tagdir="/WEB-INF/tags/functions.tld" %> 

エラーないときは、タグフォルダ内の

org.apache.jasper.JasperException: PWC6191: Tag file directory /WEB-INF/functions.tld does not start with "/WEB-INF/tags" 

エラー時に中/タグ/フォルダ

Error invoking ServletContainerInitializer org.apache.jasper.runtime.TldScanner 
org.apache.jasper.JasperException: PWC6336: Illegal TLD path /WEB-INF/tags/functions.tld, must not start with "/WEB-INF/tags" 
    at org.apache.jasper.runtime.TldScanner.processTldsInFileSystem(TldScanner.java:573) 
    at org.apache.jasper.runtime.TldScanner.processTldsInFileSystem(TldScanner.java:566) 
    at org.apache.jasper.runtime.TldScanner.scanTlds(TldScanner.java:354) 
    at org.apache.jasper.runtime.TldScanner.onStartup(TldScanner.java:242) 
    at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5713) 
    at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:623) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5609) 
    at com.sun.enterprise.web.WebModule.start(WebModule.java:540) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:900) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2044) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690) 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
    Startup of context failed due to previous errors]] 
+0

uri属性 '<%@ taglib prefix =" f "uri ="/WEB-INF/functions.tld "%>'を使用するとどうなりますか? – Gimby

+0

おそらく、なぜ私はその質問をするのか説明するのに役立ちます。* tagdir *という名前の属性を使ってタグ*ファイル*を参照して、カスタムタグライブラリを定義する方法を調べると、 uri属性を使用した例 – Gimby

+0

@Gimbyエラーはありません:)。それをチェックすると..... – Christian

答えて

0

それは簡単な誤解です。それを少し推測すると、属性tagdirを使用して、単一のタグファイルを参照することはあまり意味がありません。 URItagdirを置き換える:それを達成するための正しい方法は、実際にWEB-INFディレクトリにTLDファイルを配置し、言い換えれば

<%@ taglib prefix="f" uri="/WEB-INF/functions.tld" %> 

を使用して、それを参照することです。

このexisting questionと答えはその違いを説明します。

関連する問題