2

<c:if>jsp ファイルでjstl タグを使用すると問題が発生します。関連性はありますが、基本的には2つの質問にすべきです。

最初の質問:

私のWEB-INF/libに、jstl 1.2.jarを入れました

私のjspファイルに、これを入れました<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

私のjspファイルでは、<c:if>何かをするために を使用しています。条件が真の場合、特別なメッセージが表示されます

<c:if>条件が真でもメッセージが表示されないため、基本的に内部の内容は機能していません。

しかし、古い名前空間を使用するように変更すると、<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>. その他は変更されていません。if タグ内のメッセージが表示されるため、if タグが機能しています。

最初の質問は、名前空間で /jsp/jstl の代わりに /jstl を使用する必要がある理由です。私はjstl1.2.jarを使用しています。そのため、1.2 には新しい uri を使用することになっています。ただし、古い uri は機能しますが、新しい uir は機能しません。

2 番目の質問:

私が持っている最初の質問を無視し、/jstl を名前空間として使用するだけです。これは、私の Web アプリが思いどおりに動作するようにするためです。ただし、Web アプリを Tomcat 7.X にデプロイすると、次のような例外が表示されます。

org.apache.jasper.JasperException: /mywebapp.jsp (行: 35、列: 10) TLD またはタグ ファイルの属性ディレクティブによると、属性テストは式 org.apache.jasper.compiler.DefaultErrorHandler.jspError( DefaultErrorHandler.java:42)

/mywebapp.jsp 行:35、列:10、つまり < c:if> タグです。

名前空間を <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> から <%@ taglib prefix="c" uri="http:/ /java.sun.com/jsp/jstl/core"%>、Tomcat に正常にデプロイできますが、< c:if> タグ内の機能は役に立ちません。<c:if>ただし、タグ以外のコードは機能します。

だから私は非常に混乱していて、これを修正する方法を本当に知りたい.

ちなみに私はサーブレット2.5、jsp2.0、jstl1.2を使っています。最初の問題を修正できるかどうかを確認するために、jsp2.0 を jsp2.1 にアップグレードしようとしましたが、jsp バージョンをアップグレードする方法がわかりません。

4

2 に答える 2

3

しかし、古い名前空間を使用するように変更すると、<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>. その他は変更されていない場合、if タグ内のメッセージが表示されるため、if タグが機能しています。

standard.jarこれは、に JSTL 1.0がある場合に発生する可能性があります/WEB-INF/lib。それを取り除く。JSTL wiki ページも参照してください。ところで、Tomcat および JRE 自身の/libフォルダーに触れておらず、そこに JSTL 関連の JAR をドロップしていないか、不注意に問題を解決しようとして JSTL JAR の内容を抽出したと仮定します。


ちなみに私はサーブレット2.5、jsp2.0、jstl1.2を使っています。最初の問題を修正できるかどうかを確認するために、jsp2.0 を jsp2.1 にアップグレードしようとしましたが、jsp バージョンをアップグレードする方法がわかりません。私はプログラミングに非常に慣れていません。

自分でサーブレットまたは JSP ライブラリを提供しないで/WEB-INF/libください。サーブレット コンテナー (この場合は Tomcat) は既に同梱されています。Eclipse プロジェクトに javax.servlet API をインポートするにはどうすればよいですか?も参照してください。

web.xmlルート宣言が、サーブレット コンテナーがサポートするものに準拠していることを確認するだけで済みます。Tomcat 7 は Servlet 3.0 互換のコンテナーであるため、web.xmlルート宣言は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    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-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>
于 2012-07-20T14:40:50.237 に答える