JSP自定义select标签的取值
select取值是通过name属性获取。
自定义标签的流程:
1.继承JSP标签的标签类TagSupport,SimpleTagSupport等,重写dostart()或doTag()等方法;
public class DictTag extends TagSupport{ private static Log log = LogFactory.getLog(DictTag.class); private String dictType; //设置默认值 private String selectValue; private String id; private String name; private String htmlType; private static final long serialVersionUID = 1L; @Override public int doStartTag() throws JspException { try { String str = ""; if("select".equals(htmlType)){ str = genSelect(); } log.info(str); pageContext.getOut().write(str); } catch (Exception e) { } return EVAL_BODY_INCLUDE; }
2.定义自定义标签的属性生成get,set方法
private String genSelect(){ /*<select id="payInit_voutype" name=""> <option value="01">直接支付</option> <option value="02">授权支付</option> </select>*/ //selected="selected" StringBuffer sb = new StringBuffer(); /*sb.append("<select id=\"").append(id).append("\">");*/ //给select添加name属性方可获取select的值,
通过name属性给取值 sb.append("<select id=\"").append(id).append("\"").append(" name=\"").append(dictType).append("\">"); List<Dict> ds = SystemCache.getDictList(dictType); for(Dict d:ds){ String sd = ""; if(d.getCode().equals(selectValue)){sd = "selected=\"selected\""; }sb.append("<option " + sd +" value=\""+d.getCode()+"\">"+d.getMsg()+"</option>"); } return sb.toString(); }后台
3.后台获取数据的方法业务的实现
4.编写.tld配置文件
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>http://www.crm.com/dict/tag</short-name>
<description>自定义标签</description>
<!-- 字典表标签下拉列表 -->
<tag>
<name>dictTag</name>
<tag-class>com.xyy.springmvc.mybatis.tag.DictTag</tag-class>
<attribute>//标签属性定义
<name>id</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
5.JSP页面引用标签
<%@ taglib uri="/WEB-INF/tld/dict.tld" prefix="dic" %>
<dic:dictTag dictType="vouTyp" id="codeType" htmlType="select" name="vouTyp"/>