Weblogic中的JSTL支持

时间:2011-03-24 10:01:02

标签: java java-ee weblogic jstl web.xml

我试图使用Weblogic开始使用Java EE,并且我无法使JSTL标记工作,在最简单的代码中,我在部署应用程序时遇到以下错误:

  

index.jsp:1:4:没有标签库可以   找到这个URI。可能的原因   可能是URI不正确,或   解析过程中出错   .tld文件。 <%@ taglib prefix =“c”   URI = “http://java.sun.com/jsp/jstl/core” %>

     

^ ---- ^ index.jsp:1:4:没有标签   可以使用此URI找到库。   可能的原因可能是URI   是不正确的,或者有   解析.tld期间的错误   文件。 <%@ taglib prefix =“c”   URI = “http://java.sun.com/jsp/jstl/core” %>

     

^ ---- ^ index.jsp:2:4:没有标签   可以使用此URI找到库。   可能的原因可能是URI   是不正确的,或者有   解析.tld期间的错误   文件。 <%@ taglib prefix =“sql”   URI = “http://java.sun.com/jsp/jstl/sql” %>

     

^ ---- ^ index.jsp:2:4:没有标签   可以使用此URI找到库。   可能的原因可能是URI   是不正确的,或者有   解析.tld期间的错误   文件。 <%@ taglib prefix =“sql”   URI = “http://java.sun.com/jsp/jstl/sql” %>

我从这个网站下载了taglib文件:http://archive.apache.org/dist/jakarta/taglibs/standard/ 并在我的WEB-INF目录下放两个罐子(standard.jar和jstl.jar)。我还把arcihve中的所有tld文件放在那里。 我尝试在我的web.xml文件中引用它们并在验证后得到以下错误:

  

开始进行XML验证。检查   文件:/ C:/Users/Brodyaga/Documents/NetBeansProjects/Eshop1/web/WEB-INF/web.xml ...   参考实体在   “nbres:/org/netbeans/modules/j2ee/ddloaders/catalog/resources/XMLSchema.dtd”。   参考实体在   “nbres:/org/netbeans/modules/j2ee/ddloaders/catalog/resources/datatypes.dtd”。   cvc-complex-type.2.4.a:无效   内容被发现开头   元素'taglib'。之一   “{“http://java.sun.com/xml/ns/javaee":description,   “http://java.sun.com/xml/ns/javaee":display-name,   “http://java.sun.com/xml/ns/javaee":icon,   “http://java.sun.com/xml/ns/javaee":distributable,   “http://java.sun.com/xml/ns/javaee":context-param,   “http://java.sun.com/xml/ns/javaee":filter,   “http://java.sun.com/xml/ns/javaee":filter-mapping,   “http://java.sun.com/xml/ns/javaee":listener,   “http://java.sun.com/xml/ns/javaee":servlet,   “http://java.sun.com/xml/ns/javaee":servlet-mapping,   “http://java.sun.com/xml/ns/javaee":session-config,   “http://java.sun.com/xml/ns/javaee":mime-mapping,   “http://java.sun.com/xml/ns/javaee":welcome-file-list,   “http://java.sun.com/xml/ns/javaee":error-page,   “http://java.sun.com/xml/ns/javaee":jsp-config,   “http://java.sun.com/xml/ns/javaee":security-constraint,   “http://java.sun.com/xml/ns/javaee":login-config,   “http://java.sun.com/xml/ns/javaee":security-role,   “http://java.sun.com/xml/ns/javaee":env-entry,   “http://java.sun.com/xml/ns/javaee":ejb-ref,   “http://java.sun.com/xml/ns/javaee":ejb-local-ref,   “http://java.sun.com/xml/ns/javaee":service-ref,   “http://java.sun.com/xml/ns/javaee":resource-ref,   “http://java.sun.com/xml/ns/javaee":resource-env-ref,   “http://java.sun.com/xml/ns/javaee":message-destination-ref,   “http://java.sun.com/xml/ns/javaee":persistence-context-ref,   “http://java.sun.com/xml/ns/javaee":persistence-unit-ref,   “http://java.sun.com/xml/ns/javaee":post-construct,   “http://java.sun.com/xml/ns/javaee":pre-destroy,   “http://java.sun.com/xml/ns/javaee":message-destination,   “http://java.sun.com/xml/ns/javaee":locale-encoding-mapping-list}”   是期待。 [12] XML验证   结束。

我的web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
        <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
        <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
    </taglib>
</web-app>

我相信在web.xml开头指定的xml架构不允许taglib标签,但我不知道我应该使用什么架构。

我非常感谢为weblogic添加jstl支持的一步一步的教程。提前谢谢。

更新 从web.xml中删除那些&lt; taglib&gt;最终会出现以下错误:

  

index.jsp:18:14:标记处理程序类   没找到   “org.apache.taglibs.standard.tag.rt.core.ForEachTag”。               

并且通过c.tld文件的内容明确表示weblogic理解forEach对应于org.apache.taglibs.standard.tag.rt.core.ForEachTag,但无法找到该类。但是我可以在standard.jar中手动找到这个类。

2 个答案:

答案 0 :(得分:5)

您必须在WEB-INF / lib文件夹中包含jstl.jar和standard.jar,而不是在WEB-INF文件夹中。我想这可以解决这个问题。

答案 1 :(得分:4)

在weblogic.xml中添加library-ref:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">
    <wls:library-ref>
        <wls:library-name>jstl</wls:library-name>
        <wls:specification-version>1.2</wls:specification-version>
        <wls:exact-match>false</wls:exact-match>
    </wls:library-ref>
</wls:weblogic-web-app>

默认情况下,在WebLogic中部署了jstl库,因此不必担心这一点。