IntelliJ和JSP/JSTL无法在tomcat7中解析JSTL的taglib

dsa*_*ick 13 java jsp tomcat jstl intellij-idea

首先,我的JSTl代码在我的服务器上运行,因为我在tomcat7的Lib文件夹中有正确的Jar文件.这真的是一个IDEA问题.我的问题归结为我将相同的jar文件放在IntelliJ中的文件目录中.

我在IntelliJ和JSTL中遇到了错误.

我的问题是,当我使用

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)

它导致无法使用uri解析taglib.我尝试过不同的Jar文件,我知道我必须更正我的servlet版本.

我在Ubuntu Server 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>
Run Code Online (Sandbox Code Playgroud)

我想知道如何阻止IntelliJ在我的语法上给出错误,即使代码有效.

我在IntelliJ中读过JSTL会在JSP中出错

和

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

仍然没有运气.

Sha*_*eem 46

首先将其添加到".jsp"文件的顶部:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Run Code Online (Sandbox Code Playgroud)

它仍然会出现语法错误,但您可以通过添加"javax.servlet:jstl:1.2"(不带引号)作为模块依赖项来解决此问题.为此,请按照下列步骤操作:

  1. 单击项目名称,然后按"F4"打开模块设置对话框.
  2. 然后转到"modules"部分中的"dependencies"选项卡.
  3. 单击绿色的"+"图标 - >库 - >从Maven.
  4. 搜索javax.servlet:jstl:1.2在搜索栏中,然后按确定,它会下载并添加上述库作为一个模块.
  5. 现在你不应该有任何语法错误.

  • 在我的情况下,添加依赖项 `javax.servlet:jstl:1.2` **不起作用。** 添加依赖项 `jstl:jstl:1.2` 有效。 (7认同)
  • 添加后,@ ShamsUIAzeem给了我`绝对uri:无法在web.xml或与此应用程序一起部署的jar文件中解析http://java.sun.com/jsp/jstl/core。 (3认同)

Sin*_*tha 7

如果您使用的是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>
Run Code Online (Sandbox Code Playgroud)