创建自定义标签的处理类 PersonTag.java,需要继承 BodyTagSupport 类,并重写 doStartTag 方法,在该方法内部实现渲染我们业务上需要展示的html对应的逻辑。
package com.terwergreen;
import com.terwergreen.util.StringUtil;
import org.apache.commons.beanutils.PropertyUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* PersonTag
*
* @author Terwer
* @version 1.0
* 2019/10/16 14:24
**/
public class PersonTag extends BodyTagSupport {
protected String personName;
protected String loginName;
protected String personId;
protected Boolean layer = Boolean.TRUE;
protected Object bean;
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public Boolean getLayer() {
return layer;
}
public void setLayer(Boolean layer) {
this.layer = layer;
}
public Object getBean() {
return bean;
}
public void setBean(Object bean) {
this.bean = bean;
}
public int doStartTag() throws JspException {
try {
String cxpath = ((HttpServletRequest) pageContext.getRequest())
.getContextPath();
StringBuffer sb = new StringBuffer();
List
for (int i = 0; i < list.size(); i++) {
Map
if (list.size() > 1 && i != list.size() - 1) {
tmpPerson.put("fdName", tmpPerson.get("fdName") + ";");
}
sb.append(render(cxpath, tmpPerson,
layer != null ? layer.booleanValue() : true));
}
pageContext.getOut().print(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
return SKIP_BODY;
}
public static StringBuffer render(String cxpath,
Map
StringBuffer sb = new StringBuffer();