我认为自定义无体标签和自定义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函数之间,哪个更好和/或更好,为什么?这两者之间是否有任何性能差异?其他微小差异?
答案 0 :(得分:0)
EL函数可以在标记属性中使用,而不会使XML解析器哭泣。
真实世界的例子:
<input value="<c:out value="${bean.value}" />" />
<input value="${fn:escapeXml(bean.value)}" />