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

时间:2015-06-25 07:27:17

标签: java jsp tomcat intellij-idea jstl

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

我在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在我的语法上出错,即使代码有效。

我已阅读JSTL in IntelliJ gives errors in JSP

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

仍然没有运气。

5 个答案:

答案 0 :(得分:44)

首先将其添加到&#34; .jsp&#34;的顶部文件:

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

它仍然会出现语法错误,但你可以通过添加&#34; javax.servlet:jstl:1.2&#34;来解决这个问题。 (没有引号)作为模块依赖。为此,请按照下列步骤操作:

  1. 点击您的项目名称,然后按&#34; F4&#34; 打开模块设置对话框。
  2. 然后转到&#34;依赖&#34; &#34;模块中的标签&#34;部分。
  3. 点击绿色&#34; +&#34;图标 - &gt;库 - &gt;来自Maven。
  4. 在搜索栏中搜索javax.servlet:jstl:1.2,然后按确定,它将下载并添加上述库作为模块。
  5. 现在你不应该有任何语法错误。

答案 1 :(得分:4)

如果您使用的是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>

答案 2 :(得分:1)

就我而言,按照Shams UI Azeem提供的说明进行操作之后,我需要将JSTL库添加到WAR Exploded工件中。我所做的是:

转到项目结构。在项目设置下,选择工件。在菜单框的底部,应该有一条消息,指出所使用的JSTL库未包含在WAR中。单击此消息旁边的修复按钮。选择“将javax.servlet:jstl:1.2添加到工件”。

答案 3 :(得分:0)

在您的pom.xml中添加以下依赖项

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

答案 4 :(得分:0)

根据 Maven 存储库,javax.servlet:jstl 已移至 javax.servlet.jsp.jstl,但后者未解决 URI 解析问题。< /p>

添加旧的 javax.servlet:jstl 依赖项解决了这个问题。