Я столкнулся с очень странной проблемой с моим пользовательским тегом 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" version = "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 использует API сервлет 2.5, а Tomcat 7 использует API сервлет 3.0, это единственная подсказка, которую я имею.