2016-08-22 2 views
1

はい、この質問はthis oneと非常に似ていますが、タグリブからフォルダへの宣言ではなくTLDファイルで作業しているという大きな違いがあります。JSPの2タグファイル "/ WEB-INF/tags"が見つかりません

私の設定は次のとおりです。純粋なJavaタグライブラリをほぼJSPに移行しています(一部のタグはJavaフォームでも存続します)。私は自分のclasspath:META-INFフォルダの下にTLDを定義しました。いくつかのタグはクラスとして定義され、その他のタグは/WEB-INF/tagsの下にJSP 2タグファイルとして定義されています。例は、与えられた:

<tag-file> 
    <name>navbar</name> 
    <path>/WEB-INF/tags/navbar.tag</path> 
    <display-name>Navbar</display-name> 
</tag-file> 

このすべてのEclipseの下で素晴らしい作品を、私は手動でWEB-INFからsrc/META-INFからWeb Deployment Assemblyを設定しなければならなかったものの、それ以外のTLDファイルはTomcatが認識されません。

コードを喜んでデバッグした後、SITに配備するアプリケーションのWARバージョンを作成しようとしました。 WEB-INFの下にあるtagsディレクトリがJSP 2タグファイルとともに存在しても、アプリケーションを実行することはできません。

、エラーがiiiiiiiiiiiiis:

org.apache.jasper.JasperException: /login.jsp (line: 3, column: 0) File [/WEB-INF/tags/navbar.tag] not found 
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41) 
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:275) 
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:91) 
    org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:335) 
    org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:368) 
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:471) 
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1435) 
    org.apache.jasper.compiler.Parser.parse(Parser.java:139) 
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227) 
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) 
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199) 
    org.apache.jasper.compiler.Compiler.__compile(Compiler.java:356) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) 
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363) 
    org.apache.jasper.servlet.JspServlet._serviceJspFile(JspServlet.java:396) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 

TLDは、いつものように宣言されている

<%@ taglib prefix="example" uri="http://www.example.org/example.tld"%> 

どのように私はこの問題を解決することができますか?

答えて

0

私は部分的な解決策を見つけました(私が完全なものを見つけたら、この回答を更新します)。

TLDファイルをclasspathに配備すると、それに応じてタグを配備する必要があります。

<path>/WEB-INF/tags/navbar.tag</path><path>/META-INF/tags/navbar.tag</path>に置き換え、すべてのタグをclasspath:META-INF/tagsに移動する必要がありました。

このようにして、WARパッケージが動作しています。

は残念ながら、私は私のEclipseの設定を壊したので、タグファイルは今META-INFフォルダを参照するため、この問題を回避するには、手動設定にMETA-INF/tagsからsrc/META-INF/tagsからDeployment assemblyエントリーしました。かなり醜いですが、現時点での開発に適しています。

-1

私は同じような経験をしています。私のプロジェクトでは、タグを使用してナビゲーションメニューを1か所に保存し、多くのJSPページで使用しています。私はTomcat 8を使用しています。道に沿って学んだことのいくつかは次のとおりです。

  • tagsディレクトリには、作成する* .tldファイルと* .tagファイルが含まれています。

私の設定は、Tomcat 8、Java 7、JEE 6、Servlet 3.1、およびJSP 2.2です。私はプレーンなEclipseのJSPプロジェクトを使用しています。

<?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE xml> 
    <taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

     <tlib-version>1.2.5</tlib-version> 
     <jsp-version>2.2</jsp-version> 
     <short-name>taglibs</short-name> 
     <description>jsp tag library for the navigation code</description> 
     <tag> 
     <name>navMenu</name> 
     <tag-class>ksServer.navTag</tag-class> 
     <body-content>tagdependent</body-content> 
     </tag> 
    </taglib> 

典型的なWebアプリケーションのJSPファイルの先頭行が

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %> 
    <%@ page import="ksClasses.KsvrmSqlAgent" %> 
    <%@ page import="org.slf4j.Logger" %> 
    <%@ page import="org.slf4j.LoggerFactory" %> 
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    <%@ taglib prefix="kr" tagdir="/WEB-INF/tags" %> 
+0

は、残念ながら、これは私の質問への答えとしては動作しません、次のとおりです。(無Mavenは)ここに私のTLDファイルではありません。サーブレットの部分は無関係です。プロジェクトには特定のフォルダ名を指定する必要があります(フォルダ名のカ​​スタマイズにはある程度の自由度があります)。もっとも重要なのは、TLDファイルをjarファイル'/ WEB-INF/tags'ディレクトリよりも優先されます。私はあなたに答えを短くし、トピックに焦点を当てるように提案したい。私は、あなたの答えを編集して、タグの世界と無関係な部分を削除します。 –

関連する問題