2011-07-11 81 views
0

因此,我正在尝试创建自定义标记的sample以显示 当前日期。我在示例中做了一切,但在启动我的服务器时,其 抛出一个错误:未找到“taglib”的子翻译器。这里需要修正什么?
自定义JSP标记错误:未找到“标记库”的子翻译器

Caused by: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.ArchiveWrappedException 
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ModuleRefImpl.getDeploymentDescriptor(ModuleRefImpl.java:167) 
    at com.ibm.ws.runtime.component.DeployedModuleImpl.open(DeployedModuleImpl.java:237) 
    at com.ibm.ws.runtime.component.DeployedModuleImpl.initialize(DeployedModuleImpl.java:436) 
    ... 53 more 
Caused by: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml 
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getDeploymentDescriptor(WARFileImpl.java:147) 
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getStandardDeploymentDescriptor(WARFileImpl.java:301) 
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EARFileImpl.getDeploymentDescriptor(EARFileImpl.java:401) 
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ModuleRefImpl.getDeploymentDescriptor(ModuleRefImpl.java:165) 
    ... 55 more 
Caused by: java.lang.IllegalStateException: Parent Translator (WebAppTranslator(web-app,1971221886)) did not find a Child Translator for "taglib". 

web.xml中声明为:

<taglib> 
<taglib-uri>myTags</taglib-uri> 
<taglib-location>/WEB-INF/lib/DateTagLib.tld</taglib-location> 
</taglib> 

TLD文件:

<?xml version="1.0" encoding="ISO-8859-1" ?> 

<taglib> 
    <tlibversion>1.0</tlibversion> 
    <info>Custom Date Tag</info> 

    <tag> 
    <name>displayDate</name> 
    <tagclass>com.demo.DateTag</tagclass> 
    <bodycontent>empty</bodycontent> 
    <info>Display Date</info> 
    </tag>  

标记类:

package com.demo; 

import javax.servlet.jsp.tagext.*; 
import javax.servlet.jsp.*; 
import javax.servlet.http.*; 

import java.io.IOException; 
import java.text.*; 
import java.util.*; 

public class DateTag extends TagSupport { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public int doStartTag() throws javax.servlet.jsp.JspException { 
     HttpServletRequest req; 
     Locale locale; 
     HttpJspPage g; 
     DateFormat df; 
     String date; 
     JspWriter out; 

     req = (HttpServletRequest) pageContext.getRequest(); 
     locale = req.getLocale(); 
     df = SimpleDateFormat.getDateInstance(SimpleDateFormat.FULL, locale); 
     date = df.format(new java.util.Date()); 

     try { 
      out = pageContext.getOut(); 
      out.print(date); 
      } catch(IOException ioe){ 
       throw new JspException("IO Error: " + ioe.getMessage()); 
      } //end try/catch 

      return Tag.SKIP_BODY; 

    } //end doStarttag 

} //end DateTag 

</taglib> 
+0

更新:我把taglib标签包装在里面的WEB.xml里,异常消失了。但现在我越来越:无法找到uri的标签库 – t0mcat

回答

0

好吧,我明白了。我没有对部署描述符中的自定义标记执行“静态引用”,而是试着从JSP页面中动态引用它,并且它工作正常。