【问题标题】:Custom tag handler not working in tomcat 7, but working ok in tomcat 6自定义标签处理程序在 tomcat 7 中不起作用,但在 tomcat 6 中可以正常工作
【发布时间】:2011-08-30 12:44:36
【问题描述】:

我的自定义 jsp 标记遇到了非常奇怪的问题 - 在 tomcat 6 中部署时可以正常工作的内容在 tomcat 7 环境中不起作用。这是我的标签处理程序类:

private Long millis;

/**
 * Constructor
 */
public ConvertMillisecondsValueTag() {
    super();
    millis = null;
}

/**
 * Tag name
 */
public String getTagName() {
    return "convertMillisValueTag";
}

public Long getMillis() {
    return this.millis;
}


public void setMillis(Long millis) {
    this.millis = millis;
}

/**
 * EVAL_PAGE
 */
public int doEndTag() throws JspTagException {

    StringBuilder buff = new StringBuilder();
    long timeInSeconds = this.millis/1000;
    int seconds = (int)(timeInSeconds % 60);  
    int minutes = (int)((timeInSeconds % 3600) / 60);  
    int hours = (int)((timeInSeconds % 86400) / 3600);
    int days = (int)((timeInSeconds / 86400));
    if (days > 0) {
        buff.append(days + " d, ");
    }
    if (hours > 0) {
        buff.append(hours + " h, ");
    }
    if (minutes > 0) {
        buff.append(minutes + " min, ");
    }
    if (seconds > 0) {
        buff.append(seconds + " sec");
    }
    try {
        pageContext.getOut().print(buff.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }       

    return TagSupport.EVAL_PAGE;
}

/**
 * Release this instance of tag
 */
public void release() {
    this.millis = null;
}

这里是我的 tld 定义:

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

http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 版本="2.0">

<description>Itedge JSP Tag Library</description>
<tlib-version>1.0</tlib-version>
<short-name>itedge</short-name>
<uri>http://www.itedge.sk/tags</uri>

<tag>
    <description>
        Takes milliseconds input (long) and displays it in
        second, minutes, hours and days
    </description>
    <name>convertMillisValue</name>
    <tag-class>com.itedge.solutionmanager.web.tags.ConvertMillisecondsValueTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <description>Milliseconds input (long).</description>
        <name>millis</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>      

这里是标签的使用:

当我在 tomcat 6 中部署项目时,它工作正常,转换毫秒值并显示它,但在 tomcat 7 中,它简单不打印任何内容,并且当我在调试模式下在 doEndTag 方法中设置断点时,有没有断点匹配。你有什么想法,可能是什么问题?我知道 tomcat 6 使用 servlet 2.5 api 而 tomcat 7 使用 3.0 servlet api,这是我唯一的线索。

【问题讨论】:

    标签: java tomcat7 tld


    【解决方案1】:

    大概:

    <%@ taglib prefix="itedge" uri="http://www.itedge.sk/tags" %>
    

    你需要更换它:

    <%@ taglib prefix="itedge" uri="/WEB-INF/tlds/yourFilename.tld" %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 2021-11-13
      • 2016-12-11
      • 2013-01-30
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多