2012-05-03 182 views
0

我第一次使用java服務器頁面,並且遇到標籤問題。如果這是相關的,我也在Eclipse中工作。無標籤「選擇」標籤庫中定義的前綴爲「c」

我得到特定的錯誤是:

org.apache.jasper.JasperException: /Query.jsp (line: 5, column: 0) No tag "choose" defined in tag library imported with prefix "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> 

這是我的猜測,有某種配置錯誤的地方,但我完全無能哪裏有可能。

+0

請將鼠標放在問題下方的[[jstl]'標籤上方,直到彈出一個框,然後單擊其中的* info *鏈接。 – BalusC

回答

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文件幾乎肯定不是正確的方法。

+0

我做了這個改變,現在我得到了'org.apache.jasper.JasperException:絕對uri:http://java.sun.com/jstl/core無法在web.xml中解析或部署了jar文件與這個應用程序' 我認爲'不能解決'位是爲什麼我認爲他們已經過時。我發現了一些可能是關鍵的版本,但歡迎任何其他建議!謝謝! – munk

+0

請不要將taglib URI作爲答案中包含的skaffman來更改。 – BalusC

+0

@usmcs:'http:// java.sun.com/jstl/core'不是我說的;請閱讀答案。 – skaffman