用前缀“c”导入的标签库中没有标记“选择”

时间:2012-05-03 20:53:01

标签: jsp jstl

我第一次使用java服务器页面而且我遇到了标签问题。我也在Eclipse工作,如果那是相关的。

我得到的具体错误是:

org.apache.jasper.JasperException: /Query.jsp (line: 5, column: 0) No tag "choose" defined in tag library imported with prefix "c"

问题是,标签“选择”,带有前缀c ...

我在使用通常推荐的网址时出现问题,似乎其中一些网址已过时,因此我下载了标准标记并将其解压缩到我的WEB-INF / tags目录中。

我的jsp文件以:

开头
<%@ page contentType="text/html" import="beans.*" %>
<%@ taglib prefix="c" tagdir="/WEB-INF/tags/c.tld" %>
<%@ taglib prefix="sql" tagdir="/WEB-INF/tags/sql.tld" %>
<%@ taglib prefix="fn" tagdir="/WEB-INF/tags/fn.tld" %>    
<c:choose>
....

c.tld:

...
<tag>
    <description>
        Simple conditional tag that establishes a context for
        mutually exclusive conditional operations, marked by
        &lt;when&gt; and &lt;otherwise&gt;
    </description>
    <name>choose</name>
    <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
    <body-content>JSP</body-content>
</tag>

我猜我某处存在某种配置错误,但我对它的位置完全无能为力。

1 个答案:

答案 0 :(得分:3)

您的taglib声明是错误的。替换这个:

<%@ taglib prefix="c" tagdir="/WEB-INF/tags/c.tld" %>

用这个:

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

并确保(正如一些古老的教程所说):

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

...并重复其他库。您不需要自己的.tld文件副本,不再需要它们。

  

我在使用通常推荐的网址时出现问题,似乎其中一些已经过时了

我不确定你从哪里得到它,但几乎所有的JSP / servlet引擎都可以使用我提到的URI。如果这些URI 有效,那么就会发布一个新问题。下载您自己的tld文件几乎肯定不是正确的方法。