java枚举类为下拉框提供值的情况

java枚举类关键字enum,是jdk1.5之后 才有的新类型。java枚举类在类加载的过程会创建自定义的枚举对象,在静态块中进行初始化,枚举适用于一个类的对象个数固定的情况。

1、如何创建一个枚举类?创建一个枚举类就和创建类的原理一样,只是class关键字换成enum关键字,比如:

public enum Light {
    RED , GREEN , YELLOW ;
}

2、java枚举类的用法:

      1)、常量,使用java枚举类可以替代常量,因为常量没有命名空间,使用起来不是非常清晰,如果使用java枚举类,就可以清晰地读懂代码,代码可维护性强。

    2)、switch条件语句中,switch可以只用使用java枚举进行条件判断,清晰明朗。

3、具体使用:

     在最近的开发中,页面上有一个 名为 正/反例的下拉框,值为,是 和否。使用的是boolean类型,按照之前的写法,下拉框固定的值都写死在页面。但是现在老大 发话了,说这样写死不利于维护,也不安全,说让写枚举类,行,枚举类就枚举类。

    上代码:

先写一个返回下拉框数据的 model 类:

public class SelectBean implements Serializable{
	 private String seKey;
	 private String seValue;
	public String getSeKey() {
		return seKey;
	}
	public void setSeKey(String seKey) {
		this.seKey = seKey;
	}
	public String getSeValue() {
		return seValue;
	}
	public void setSeValue(String seValue) {
		this.seValue = seValue;
	}
	
}

后台 枚举类:

public enum CaseNegative {
	CASENEGATIVE_ALL("","全部"),
	CASENEGATIVE_JUST("0","正列"),
	CASENEGATIVE_BACK("1","反列");
	private String label;
	private String value;
	public String getLabel() {
		return label;
	}
	public void setLabel(String label) {
		this.label = label;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
	private CaseNegative(String label, String value) {
		this.label = label;
		this.value = value;
	}
	
}

页面加载时调用 枚举类拿值的方法:

/**
	 * 下拉框
	 * @param String 
	 * @return list
	 */
	@Override
	public List<SelectBean> queryEnumList(ReqObject<String> data) {
		SelectBean bean;
	    List<SelectBean> listBean = null;
	
		 listBean=new ArrayList<SelectBean>();
		    for(CaseNegative e: CaseNegative.values()){
		    	bean = new SelectBean();
		    	bean.setSeKey(e.getLabel());
		    	bean.setSeValue(e.getValue());
		    	listBean.add(bean);
		    }
		
   }
	return listBean;
 }

最后:前台显示 react:

<div style={{marginRight:'10px',float:'left'}}>
     <label>
         正反例:
     </label>

     <Select   id="negative" defaultValue=""  onChange={this.changeIsNegative.bind(this)} 
     >
        {optsInterfaceType}
     </Select>
</div>
//render 组装数据
 const {negatives,isStatus,selectedRowKeys} = this.state;
 const optsInterfaceType = [];
 negatives.map((item, i) => {
     return optsInterfaceType.push(<Option key={item.seKey} value={item.seKey}>    
             {item.seValue}</Option>);
     });
//调用 后台
initIsNegative = () => {
    CaseAppActions.initCaseSel();
}

结果展示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章