; 和 </u:eval>之间。
EvalTag 类扩展了 VarTagSupport,这是因为它需要 export(),以便使用 var 属性指定的名称和由 evaluate() 返回的值创建 JSP 变量。如果 var 属性不存在,则 export() 无法设置变量并返回 false。这种情况下,EvalTag 使用从 VarTagSupport 继承的 write() 方法输出所求解表达式的值。
EvalTag 处理类的源代码如下所示:
package jsputils.tags;
import jsputils.el.ELUtils;
import javax.servlet.jsp.JspException; [Page]
public class EvalTag extends VarTagSupport {
private String strExpr;
private Object varType;
public EvalTag() {
varType = Object.class;
}
public void setExpr(String expr) throws JspException {
strExpr = expr;
}
public void setType(Object type) throws JspException {
varType = type;
}
protected Object evaluate(String expression,
Object expectedType) throws JspException {
return ELUtils.evaluate(
expression, expectedType, getJspContext());
}
public void doTag() throws JspException {
if (strExpr == null)
strExpr = invokeBody();
Object value = evaluate(strExpr, varType);
boolean exportexported = export(value);
if (!exported && value != null)
write(value.toString());
}
}
在库描述符中定义定制标记
<u:eval> 标记定义在名为 util.tld 的 XML 文件中。JSP 容器使用此文件将定制标记映射为它的处理类 (EvalTag)。除标记的名称和标记处理类外,该描述