public class RoadTag extends BodyTagSupport { private static final long serialVersionUID = 7184472049892880332L;
private String elemname;
private String elemid;
private String label;
private String style;
private String onchange;
private String dataType;
private String msg;
private String paramname; public int doStartTag() {
HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
String rid = this.getParamname();
System.out.println("rid===" + rid);
String roadid = request.getParameter(this.getParamname());
System.out.println(roadid);
StringBuffer sb = new StringBuffer();
if (!StringUtils.isBlank(this.label)) {
sb.append(this.label);
}
if (!StringUtils.isBlank(this.dataType)
&& !StringUtils.isBlank(this.label)) {
sb.append("<font color=red>*</font>");
}
sb.append("<select name='" + this.elemname + "' id='" + this.elemid
+ "' ");
if (!StringUtils.isBlank(this.style)) {
sb.append(" style='" + this.style + "'");
}
if (!StringUtils.isBlank(this.dataType)) {
sb.append(" dataType='" + this.dataType + "'");
}
if (!StringUtils.isBlank(this.msg)) {
sb.append(" msg='" + this.msg + "'");
}
if (!StringUtils.isBlank(this.onchange)) {
sb.append(" onchange='" + this.onchange + "'");
}
sb.append(">");
WebApplicationContext wc = WebApplicationContextUtils
.getWebApplicationContext(this.pageContext.getServletContext());
RoadService roadService = (RoadService) wc.getBean("roadService");
List<Road> list = roadService.getRoad();
sb.append("<option value=''>---请选择---</option>");
if (null != list && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Road road = (Road) list.get(i);
sb.append("<option value='" + road.getId() + "'");
if (!StringUtil.isBlank(rid) && rid.equals(road.getId())) {
sb.append(" selected ");
}
sb.append(">");
sb.append(road.getRoadname() + "(" + road.getRoadtype() + ")"
+ "</option>");
}
}
sb.append("</select>");
try {
System.out.println(sb.toString());
pageContext.getOut().print(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
} public String getParamname() {
return paramname;
} public void setParamname(String paramname) {
this.paramname = paramname;
} public String getElemname() {
return elemname;
} public void setElemname(String elemname) {
this.elemname = elemname;
} public String getElemid() {
return elemid;
} public void setElemid(String elemid) {
this.elemid = elemid;
} public String getLabel() {
return label;
} public void setLabel(String label) {
this.label = label;
} public String getStyle() {
return style;
} public void setStyle(String style) {
this.style = style;
} public String getOnchange() {
return onchange;
} public void setOnchange(String onchange) {
this.onchange = onchange;
} public String getDataType() {
return dataType;
} public void setDataType(String dataType) {
this.dataType = dataType;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
}
}
<tag>
    <name>road</name>
    <tag-class>com.gci.apts.gis.web.taglib.RoadTag</tag-class>
    <body-content>empty</body-content>
<attribute>
<name>label</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>paramname</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>elemname</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>elemid</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>onchange</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>dataType</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>msg</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>style</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag><apts:road onchange="changeRoad();" elemid="road" elemname="road" paramname="${roadid}"/>后台打印三次啊!!! 这是为什么?