天天看點

java enum 結合jstl自定義标簽做展示

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)}