<tls: defineVariable name="leader" type="String" />
<tls: defineVariable name="independenceDate" type="Date" />
<tls: defineVariable name="PI" type="Double" />有问题,在tls:与defineVariable之间不应有空格。写成<tls:defineVariable name="leader" type="String" />就没问题了。
还有<td> <%=leader%> </td>这种写法是错误的。应写成<td><tls:defineVariable name="leader" type="String" /></td>。但要输出,还要改你的DefineVarTag.class。
把if(name.equals("leader"))pageContext.setAttribute(name,"Mahatma Gandhi");改为
if(name.equals("leader")){
try{
 pageContext.getOut().print("Mahatma Gandhi");
}catch(IOException e){
System.out.println("errors");
   }
}
其他的同样的改法。