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

2022-09-02 04:54:52

首先,我的JSTl代码在我的服务器上工作,因为我在tomcat7的Lib文件夹中有正确的Jar文件。这实际上是一个IDEA问题。我的问题归结为我在IntelliJ中的文件目录中放置相同的jar文件的位置。

我在IntelliJ和JSTL中遇到了一个错误。

我的问题是,当我使用

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

它会导致无法使用 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>

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

我已经阅读了IntelliJ中的JSTL给出了JSP中的错误

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

仍然没有运气。


答案 1

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

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

它仍然会给出语法错误,但你可以通过添加为模块依赖项来修复它。若要执行此操作,请按照下列步骤操作:javax.servlet:jstl:1.2

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

答案 2

如果您使用的是 maven,请在标记内添加以下代码.xml pom.xml<dependencies></dependencies>

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