天天看点

关于web.xml中不能识别taglib的问题

 关于web.xml中不能识别<taglib>的问题

关于eclips中不能识别<taglib>的问题

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

myeclips5的标签使用,再web.xnl中不用声明<taglib>标签就可以直接使用标签,这好像是2.4版本的特点。

但是,再jsp页面中

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

如果不加,标签被忽视,显示空白。

如果写为:<%@ taglib uri="http://java.sun.com/jsf/core" prefix="c"%>,则是会报错!!!!!

这是为什么呢?

原因是这样的的!!!

如果使用标签,jstl.jar+standard.jar应该放到工程的lib目录下。

解压缩standard.jar然后到里面的META-INF里面找到标签描述文件(很多.tld文件),然后打开tld文件,看看里面不同的uri就可以了。

我解开c.tld,看到这句话<uri>http://java.sun.com/jsp/jstl/core</uri>,这就是原因!!!!!

总之:

完全可以:

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

不可以:

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

myeclips是没有再web.xml中自动添加<taglib>标签的,这不是myeclips的bug,可见myecips还是很聪明的,我们要相信它。

如果*.tld文件不在WEB-INF下,就需要写了,格式为:

<jsp-config>

   <taglib>

    <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>

    <taglib-location>token</taglib-location>

   </taglib>

</jsp-config>

模板如下:

=========================index.jsp=============================

<%@ page language="java" pageEncoding="GB18030"%>

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

   <title>My JSF 'index.jsp' starting page</title>

   <!--

<link rel="stylesheet" type="text/css" href="styles.css" target="_blank" rel="external nofollow" >

-->

</head>

<body>

   <c:forEach var="i" begin="1" end="30" step="1">

    <c:out value="${i}" />

    <br />

   </c:forEach>

</body>

</html>

=========================web.xml=============================

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

</web-app>

-------------------------------------------------------------

我写了一个自定义的标记库,在web.xml中要写一段<taglib>……</taglib>。

语法和格式都是正确的,在Tomcat中运行都正常,我是用MyEclipse来开发的,其实web.xml可以有taglib这个元素的,但是MyEclipse不认识……总是有个红色的叉子看着很不爽啊,怎么解决这个问题呢?

响应者 1:

你的jar包没有被加载进来,你把报的什么错贴出来

响应者 2:

你加载的是什么WEB.xml,头是不是这种的???

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://JAVA.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/xmlSchema-instance"

xsi:schemaLocation="http://JAVA.sun.com/xml/ns/j2ee

http://JAVA.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

响应者 3:

是的话,要加载标签库是这样的

<jsp-config>

<taglib>

<taglib-uri>XXXXX</taglib-uri>

<taglib-location>XXXXXXX</taglib-location>

</taglib>

</jsp-config>

响应者 4:

谢谢Asclepios()

--------------------------------------------------------------------------------------------------------------------------

在tomcat中配置自定义标签的时候,会遇到一个问题

web.xml中,有两个版本的DTD认证,一个是java1.2版本的,一个是2.0版本的,所以就形成了不同版本的时候作出的配置不一样

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd

是2.0版本的

所以在web.xml中添加自己的taglib的时候要包含在<jsp-config></jsp-config>中间才行.

<jsp-config>

<taglib>

      <taglib-uri>/date</taglib-uri>

      <taglib-location>/WEB-INF/date.tld</taglib-location>

</taglib>

</jsp-config

---------------------------------------------------------------------------------------------------------------------------

<jsp-config>标签使用详解

<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素。

     其中<taglib>元素在JSP 1.2时就已经存在;而<jsp-property-group>是JSP 2.0 新增的元素。

     <jsp-property-group>元素主要有八个子元素,它们分别为:

     1.<description>:设定的说明;

     2.<display-name>:设定名称;

     3.<url-pattern>:设定值所影响的范围,如:/CH2 或 /*.jsp;

     4.<el-ignored>:若为true,表示不支持EL 语法;

     5.<scripting-invalid>:若为true,表示不支持<% scripting %>语法;

     6.<page-encoding>:设定JSP 网页的编码;

     7.<include-prelude>:设置JSP 网页的抬头,扩展名为.jspf;

     8.<include-coda>:设置JSP 网页的结尾,扩展名为.jspf。

一个简单的<jsp-config>元素完整配置:

<jsp-config>

     <taglib>

         <taglib-uri>Taglib</taglib-uri>

         <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>

     </taglib>

     <jsp-property-group>

         <description>Special property group for JSP Configuration JSP example.</description>

         <display-name>JSPConfiguration</display-name>

         <url-pattern>/jsp/* </url-pattern>

         <el-ignored>true</el-ignored>

         <page-encoding>GB2312</page-encoding>

         <scripting-invalid>true</scripting-invalid>

         <include-prelude>/include/prelude.jspf</include-prelude>

         <include-coda>/include/coda.jspf</include-coda>

     </jsp-property-group>

</jsp-config>