import javax.el.MethodExpression;
import javax.el.ValueExpression;
+import javax.servlet.jsp.tagext.JspIdConsumer;
import javax.servlet.jsp.tagext.TagAttributeInfo;
import javax.servlet.jsp.tagext.TagInfo;
import javax.servlet.jsp.tagext.TagVariableInfo;
out.print(" ");
out.print(tagHandlerVar);
out.print(" = ");
- if (isPoolingEnabled) {
+ if (isPoolingEnabled && !(JspIdConsumer.class.isAssignableFrom(tagHandlerClass))) {
out.print("(");
out.print(tagHandlerClassName);
out.print(") ");
.println(".doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {");
out.pushIndent();
if (!n.implementsTryCatchFinally()) {
- if (isPoolingEnabled) {
+ if (isPoolingEnabled && !(JspIdConsumer.class.isAssignableFrom(n.getTagHandlerClass()))) {
out.printin(n.getTagHandlerPoolName());
out.print(".reuse(");
out.print(tagHandlerVar);
sb.append(getJspContextVar());
sb.append(".getELContext()");
sb.append(")");
- }
+ }
attrValue = sb.toString();
} else if (attr.isDeferredMethodInput()
|| MethodExpression.class.getName().equals(type)) {
TagHandlerInfo handlerInfo, boolean simpleTag)
throws JasperException {
+ // Set the id of the tag
+ if (JspIdConsumer.class.isAssignableFrom(n.getTagHandlerClass())) {
+ out.printin(tagHandlerVar);
+ out.print(".setJspId(\"");
+ out.print(n.getId());
+ out.println("\");");
+ }
+
// Set context
if (simpleTag) {
// Generate alias map
*/
public static class CustomTag extends Node {
+ private static int id = 0;
+
private String uri;
private String prefix;
return this.numCount;
}
+ public String getId() {
+ return "_" + (++id);
+ }
+
public void setScriptingVars(Vector vec, int scope) {
switch (scope) {
case VariableInfo.AT_BEGIN: