Java Enum 學習篇:
http://blog.csdn.net/abing37/archive/2009/07/29/4391222.aspx
以前做項目都是使用final Static定義狀态,這樣做也能滿足要求,當狀态碼發生改變的時候隻需改一處地方,剛才聽同僚說可以使用enum來定義常量,更加優雅,是以決定學習下。上面這篇部落格介紹了enum的入門和原理,我将把同僚做的jstl自定義标簽展示出來,積累下知識
1.定義enum-HvProcStateEnum
public enum HvProcStateEnum {
TOCHECK("90","待複核"),TOUPDATE("93","待修改"),TOGRANT("92","待授權"),
TOSEND("03","待發送"),SENDED("04","已發送"),APIOK("05","API成功"),
APIFAIL("06","AIP拒絕"); //.................其他暫略
private String code;
private String descript;
private HvProcStateEnum(String code,String descript){
this.code = code;
this.descript = descript;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescript() {
return descript;
}
public void setDescript(String descript) {
this.descript = descript;
}
}
2.state.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.1</tlib-version>
<short-name>state</short-name>
<uri>/test.state</uri>
<function>
<description>大額往賬彙兌業務中文處理狀态</description>
<name>hvsendproc</name>
<function-class>com.test.util.StateUtil</function-class>
<function-signature>
java.lang.String getHvCnProc(java.lang.String)
</function-signature>
<example>${state:getHvCnProc(value)}</example>
</function>
</taglib>
3.處理類StateUtil
public class StateUtil {
/*
* 傳回大額往賬彙兌業務處理狀态中文描述
*/
public static String getHvCnProc(String code){
String retValue = "未知";
if(code != null){
code = code.trim();
if("".equals(code)){
return retValue;
}
}else{
return retValue;
}
for(HvProcStateEnum en: HvProcStateEnum.values()){
if(en.getCode().equals(code)){
retValue = en.getDescript();
break;
}
}
return retValue;
}
}
4.在web.xml注冊tld
<jsp-config>
<taglib>
<taglib-uri>/test.state</taglib-uri>
<taglib-location>/WEB-INF/tld/state.tld</taglib-location>
</taglib>
</jsp-config>
5.使用jstl自定義标簽
jsp裡加入
<%@ taglib prefix="state" uri="/test.state" %>
然後
${state:hvsendproc(hvSndExchglist.procstate)}