package com.aggrepoint.winlet.jsp.taglib;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.DynamicAttributes;
import javax.servlet.jsp.tagext.TagSupport;
/**
* Button的label和onclick属性会被框架处理,其他属性直接被带到对话框的上(如果对话框控件支持的话)。
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class DialogButtonTag extends BodyTagSupport implements
DynamicAttributes {
private static final long serialVersionUID = 1L;
HashMap<String, String> button = new HashMap<String, String>();
public void setDynamicAttribute(String uri, String localName, Object value)
throws JspException {
button.put(localName, value.toString());
}
@Override
public int doStartTag() throws JspException {
return (EVAL_BODY_BUFFERED);
}
public int doAfterBody() {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(baos, "UTF-8");
bodyContent.writeOut(writer);
writer.flush();
button.put("label", baos.toString("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
DialogTag dialog = (DialogTag) TagSupport.findAncestorWithClass(this,
DialogTag.class);
dialog.addButton(button);
button = new HashMap<String, String>();
bodyContent.clearBody();
return SKIP_BODY;
}
}