想要前端下拉框的值是通过后端查询传过来的,如果将来增加类型,只需要修改后端的枚举值就可以了,不用修改前端代码;
一:定义一个枚举类,其中每个枚举值都具有code和name属性。
public enum ExampleEnum {
VALUE1("code1", "Name 1"),
VALUE2("code2", "Name 2"),
VALUE3("code3", "Name 3");
private String code;
private String name;
ExampleEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
public static final Map<Integer, String> map = new HashMap();
static {
for (ExampleEnum exampleEnum : ExampleEnum .values()) {
map.put(exampleEnum.getCode(), exampleEnum.getName());
}
}
}
二,页面通过调用后端接口跳转
将枚举类的值获取后放进map中,前端取的时候通过key,value获取code,name属性;
@RequestMapping("/example")
public String example(HttpServletRequest request) {
Map<String,String> map=ExampleEnum.map;
request.setAttribute("exampleEnums", map);
return "/jsp/examplePage";//页面相对路径
}
页面展示:
<div >
<label >类型</label>
<div >
<select id="status" name="status">
<option value="">请选择</option>
<c:forEach items="${exampleEnums}" var="exampleEnum"><!--使用jstl遍历枚举值-->
<option value="${exampleEnum.key}">${exampleEnum.value}</option>
</c:forEach>
</select>
</div>
</div>
使用jstl需要引入对应的包;