今天在做公司的一個項目,一個廣告類型分別用數字1和2表示
1、首先定義枚舉類,封裝取值方法
public enum SysHomeTypeEnum {
SYS_HOME_TYPE_CATEGORY(1, "首頁分類"),
SYS_HOME_TYPE_ADVERTISING(2, "首頁廣告");
private Integer code;
private String name;
SysHomeTypeEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
// public static String getTypeName(Integer code){
// for(SysHomeTypeEnum typeEnum:SysHomeTypeEnum.values()){
// if(code.equals(typeEnum.name())){
// return typeEnum.getName();
// }
// }
// return "";
// }
public static SysHomeTypeEnum getEnumByKey(Integer code) {
if (null == code) {
return null;
}
for (SysHomeTypeEnum temp : SysHomeTypeEnum.values()) {
if (temp.getCode() == code) {
return temp;
}
}
return null;
}
public static final Map<Integer, String> map = new HashMap();
static {
for (SysHomeTypeEnum tEnum : SysHomeTypeEnum.values()) {
map.put(tEnum.getCode(), tEnum.getName());
}
}
}
2、直接將枚舉轉為map就可以傳給前端了,首先打出來測試下看能不能取到
public static void main(String[] args) {
Map<Integer, String> map = SysHomeTypeEnum.map;
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
for (Map.Entry<Integer, String> entry : entrySet) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
3、結果是可以取到的
4、到controller直接傳給前端
Map<Integer, String> map = SysHomeTypeEnum.map;
model.addAttribute("enumType", map);
5、前端遍歷出來就可以了
<div class="layui-form-item">
<label class="layui-form-label">類型</label>
<div class="layui-input-block">
<select name="homeType" lay-verify="homeType" lay-filter="homeType">
<option value="">請選擇</option>
<option th:each="s:${enumType}" th:value="${s.key}" th:text="${s.value}"></option>
</select>
</div>
</div>