自定义标记处理程序(无体)与EL函数

时间:2015-08-13 18:24:41

标签: java el taglib

我认为自定义无体标签和自定义EL功能可以互换。

<%-- call your custom tag --%>
<custom:formatSlug properties="${properties}" />

<%-- call your custom EL function --%>
${custom:formatSlug(properties)}

标签:

package com.example.taglib.handler;

import javax.servlet.jsp.tagext.SimpleTagSupport;
import javax.servlet.jsp.JspException;  
import java.io.IOException;
import java.util.Properties;

public class FormatSlugTagHandler extends SimpleTagSupport {

  private Properties properties;

  @Override
  public void doTag() throws JspException, IOException {
    getJspContext().getOut().write("slug-" + properties.getProperty("slug")); 
  }
 
  public void setProperties(Properties properties) {
    this.properties = properties;
  }
}

EL功能:

package com.example.taglib.function;

import java.util.Properties;

public class ELFormatters {

  public void formatSlug(Properties properties) {
    return "slug-" + properties.getProperty("slug");
  }
}

我一直试图找到一些有关每种方法的利弊的信息,但却未能找到支持一种方法的主观意见。也许社区可以权衡。

在标签处理程序和EL函数之间,哪个更好和/或更好,为什么?这两者之间是否有任何性能差异?其他微小差异?

1 个答案:

答案 0 :(得分:0)

EL函数可以在标记属性中使用,而不会使XML解析器哭泣。

真实世界的例子:

<input value="<c:out value="${bean.value}" />" />
<input value="${fn:escapeXml(bean.value)}" />