web-dev-qa-db-fra.com

IntelliJ et JSP / JSTL ne peuvent pas résoudre le taglib pour JSTL dans Tomcat7

Tout d'abord, mon code JSTl fonctionne sur mon serveur car j'ai le bon fichier Jar dans le dossier Lib de Tomcat7. C'est vraiment un problème IDEA. Mes questions se résument à l'endroit où j'ai mis le même fichier jar dans mon répertoire de fichiers dans IntelliJ.

J'ai rencontré une erreur dans IntelliJ et JSTL.

Mon problème est que lorsque j'utilise

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

Il en résulte Ne peut pas résoudre taglib avec uri. J'ai essayé différents fichiers Jar et je sais que je dois corriger la version de ma servlet.

Im exécutant Tomcat7 sur Ubuntu Server 15.04 et IntelliJ 14.1.3.

J'ai essayé d'importer le fichier jar via la structure du projet et de l'inclure à divers endroits, mais toujours la même erreur après la reconstruction du projet, la fermeture et la réouverture de l'IDEA.

Cet exemple de code s'exécute lorsqu'il est déployé sur Tomcat, mais IntelliJ continue de donner des erreurs.

<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>

Je voudrais savoir comment empêcher IntelliJ de donner des erreurs sur ma syntaxe même si le code fonctionne.

J'ai lu JSTL dans IntelliJ donne des erreurs dans JSP

et

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

Toujours pas de chance.

15
dsadnick

Ajoutez d'abord ceci en haut de votre .jsp fichier:

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

Cela donnera toujours une erreur de syntaxe, mais vous pouvez corriger cela en ajoutant javax.servlet:jstl:1.2 comme dépendance de module. Pour ce faire, procédez comme suit:

  1. Cliquez sur le nom de votre projet et appuyez sur F4 pour afficher la boîte de dialogue des paramètres du module.
  2. Accédez ensuite à l'onglet dependencies dans la section modules.
  3. Cliquez sur le vert + icône -> bibliothèque -> Depuis Maven.
  4. Rechercher javax.servlet:jstl:1.2 dans la barre de recherche et appuyez sur OK pour télécharger et ajouter la bibliothèque mentionnée ci-dessus en tant que module.
  5. Maintenant, vous ne devriez plus avoir d'erreur de syntaxe.
49
Shams Ul Azeem

Si vous utilisez maven, ajoutez le code suivant dans pom.xml à l'intérieur du <dependencies></dependencies> tag

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

Si vous obtenez toujours des erreurs après avoir suivi les instructions fournies par Shams UI Azeem, vous devrez peut-être ajouter la bibliothèque JSTL à l'artefact WAR éclaté. Pour faire ça:

  1. Accédez à la structure du projet. Sous Paramètres du projet, sélectionnez Artefacts. Au bas de la boîte de menu, il peut y avoir un message qui mentionne que la bibliothèque JSTL utilisée n'est pas incluse dans WAR.

2a. Message visible. Si le message s'affiche, il devrait y avoir un bouton Fix à côté. Cliquez sur ce bouton Fix. Sélectionnez "ajouter javax.servlet:jstl:1.2 À l'artefact".

2b. Message non visible. Si le message ne s'affiche pas, regardez ci-dessus pour voir si la javax.servet:jstl:1.2 (Project Library) se trouve sous la colonne Éléments disponibles. Si c'est le cas, faites un clic droit dessus et sélectionnez "Mettre dans/WEB-INF/lib".

Si vous travaillez avec Maven, le message Fix n'apparaîtra pas, mais vous devrez toujours le faire.

2
Jack J

Ajoutez la dépendance ci-dessous à votre 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