【问题标题】:JSTL: c:if Not Found in Build PathJSTL:c:如果在构建路径中找不到
【发布时间】:2019-06-12 15:25:47
【问题描述】:

我最近将一个 ANT 项目迁移到 Maven。在完成所有依赖项并使项目没有错误之后。我在 Eclipse 中看到了这个警告:

The tag handler class for "c:if" (org.apache.taglibs.standard.tag.rt.core.IfTag) was not found on the Java Build Path

对于 c:import、c:out c:set,我也看到了相同的警告。

我确实有标签:

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

在 JSP 中添加。我在 pom 文件中添加了 JSTL 1.2 依赖项。你能告诉我如何摆脱这些警告吗?

【问题讨论】:

    标签: maven jsp jstl maven-3


    【解决方案1】:

    我有同样的错误。为了修复它,我刚刚在我的 pom.xml 中添加并保存了以下内容。

    <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
    <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>1.2.1</version>
    </dependency>
    

    在某些较旧的 Eclipse 版本中,您可能需要修改“

    我的代码使用

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
    <%@ attribute name="normalPrice" fragment="true" %>
    <%@ attribute name="onSale" fragment="true" %>
    <%@ variable name-given="name" %>
    <%@ variable name-given="price" %>
    <%@ variable name-given="origPrice" %>
    <%@ variable name-given="salePrice" %>
       <head>
          <title>Tag Example</title>
       </head>
    <table border="1">
      <tr>
        <td>
          <c:set var="name" value="Hand-held Color PDA"/>
          <c:set var="price" value="$298.86"/>
          <jsp:invoke fragment="normalPrice"/>
        </td>
        <td>
          <c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>
          <c:set var="origPrice" value="$2.98"/>
          <c:set var="salePrice" value="$2.32"/>
          <jsp:invoke fragment="onSale"/>
        </td>
        <td>
          <c:set var="name" value="Digital Cellular Phone"/>
          <c:set var="price" value="$68.74"/>
          <jsp:invoke fragment="normalPrice"/>
        </td>
        <td>
          <c:set var="name" value="Baby Grand Piano"/>
          <c:set var="price" value="$10,800.00"/>
          <jsp:invoke fragment="normalPrice"/>
        </td>
        <td>
          <c:set var="name" value="Luxury Car w/ Leather Seats"/>
          <c:set var="origPrice" value="$23,980.00"/>
          <c:set var="salePrice" value="$21,070.00"/>
          <jsp:invoke fragment="onSale"/>
        </td>
      </tr>
    </table>
    <body>
       <c:set var = "salary" scope = "session" value = "${2000*2}"/>
       <c:if test = "${salary > 2000}">
           <p>My salary is:  <c:out value = "${salary}"/><p>
       </c:if>
    </body>
    

    【讨论】:

      【解决方案2】:

      如果标签确实可以正常工作,那么它只是来自 Eclipse 的误报。在这种情况下,您可以强制进行新的检查以编辑标签名称,然后将其设置回正确的名称。

      因此,例如,单击“c:if”标签,删除单个字符,然后重新输入(与之前完全一样)。保存。就我而言,这足以消除警告。

      【讨论】:

      • 您能否根据问题 OP 在一个简短的示例中展示您的解决方案。它使您的答案不会因质量低下而被标记为删除。
      • 这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
      • 对不起,我添加了几行以另一种方式重申相同的概念。我不知道如何才能更好地阐明解决方案。我有几次同样的问题,至少在我的情况下,解决方案非常简单。只需将标签重命名为其名称即可。我知道它看起来很奇怪,但就是这样。
      猜你喜欢
      • 2012-12-01
      • 2016-12-23
      • 2015-01-12
      • 2021-05-12
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多