<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 バージョンをアップグレードする方法がわかりません。