web-dev-qa-db-ja.com

IntelliJおよびJSP / JSTLがTomcat7のJSTLのtaglibを解決できない

まず、Tomcat7のLibフォルダーに適切なJarファイルがあるので、私のJSTlコードは私のサーバーで機能します。これは本当にIDEA問題です。私の質問は、同じjarファイルをIntelliJ内の私のファイルディレクトリに配置する場所にまで及びます。

IntelliJとJSTLでエラーが発生しました。

私の問題は、私が使うとき

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

その結果、uriでtaglibを解決できません。さまざまなJarファイルを試しましたが、サーブレットのバージョンを修正する必要があることはわかっています。

私はUbuntuサーバー15.04とIntelliJ 14.1.3でTomcat7を実行しています。

プロジェクト構造を介してjarファイルをインポートしてさまざまな場所に含めようとしましたが、プロジェクトを再ビルドし、IDEAを閉じて再度開いた後も同じエラーが発生します。

このサンプルコードはTomcatにデプロイすると実行されますが、IntelliJはエラーを出し続けます。

<table border="1">
    <c:forEach var="a" items="${data}">
        <tr>
            <td>${a}</td>
        </tr>
    </c:forEach>
</table>

<c:forEach begin="0" end="255" var="i">
    <span style='color:rgb(
        <c:out value="${i}"/>,
        <c:out value="${i}"/>,
        <c:out value="${i}"/>);'>
        <c:out value="${i}"/></span> <br />
</c:forEach>

コードが機能していても、IntelliJが構文にエラーを出さないようにする方法を教えてください。

私は読んだ IntelliJのJSTLはJSPにエラーを与える

そして

https://www.jetbrains.com/idea/features/jsp_editor.html

まだ運がない。

15
dsadnick

まず、これを.jspファイルの先頭に追加します。

<%@ taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c" %>

それでも構文エラーが発生しますが、モジュールの依存関係としてjavax.servlet:jstl:1.2を追加することで修正できます。これを行うには、次の手順に従います。

  1. プロジェクト名をクリックして、 F4 モジュール設定ダイアログを表示します。
  2. 次に、dependenciesセクションのmodulesタブに移動します。
  3. 緑色の+アイコン->ライブラリ-> From Mavenをクリックします。
  4. 検索バーでjavax.servlet:jstl:1.2を検索して[OK]を押すと、上記のライブラリがダウンロードされ、モジュールとして追加されます。
  5. これで、構文エラーは発生しなくなりました。
49
Shams Ul Azeem

Mavenを使用している場合は、<dependencies></dependencies>タグ内のpom.xmlに次のコードを追加します

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
7

Shams UI Azeemの指示に従ってもエラーが発生する場合は、JSTLライブラリをWAR Explodedアーティファクトに追加する必要がある場合があります。これをする:

  1. プロジェクト構造に移動します。 [プロジェクトの設定]で、[アーティファクト]を選択します。メニューボックスの下部に、使用されているJSTLライブラリがWARに含まれていないことを示すメッセージが表示される場合があります。

2a。 メッセージが表示されます。 メッセージが表示されたら、その横に[修正]ボタンがあるはずです。この修正ボタンをクリックします。 「アーティファクトに_javax.servlet:jstl:1.2_を追加」を選択します。

2b。 メッセージは表示されません。 メッセージが表示されない場合は、上を見て、[利用可能な要素]列の下にjavax.servet:jstl:1.2 (Project Library)があるかどうかを確認してください。正しい場合は、右クリックして「Put into/WEB-INF/lib」を選択します。

Mavenを使用している場合、修正メッセージは表示されませんが、これを行う必要があります。

2
Jack J

以下の依存関係をpom.xmlに追加します

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
0
Ravendra Singh