首先,定义的类如下:
public enum EqualOrNoEnum {
NO_EQUAL("0", "不等于"),
EQUAL("1", "等于");
private String code;
private String name;
private EqualOrNoEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getName(String code) {
if(StringUtils.isBlank(code)){
return null;
}
EqualOrNoEnum[] values = EqualOrNoEnum.values();
for (EqualOrNoEnum source : values) {
if (source.code.equals(code)){
return source.name;
}
}
return null;
}
/**
* 返回所有的枚举集合
*/
public static List<EqualOrNoEnum> getAllTypes(){
return Arrays.asList( EqualOrNoEnum.values());
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
在Action类中加入enum到request中
setAttribute("isEqualOrNo", EqualOrNoEnum.getAllTypes());
最后在相应的页面中加入选择属性
<s:select name="citTaxAdjustVO.isEqual" list="#request.isEqualOrNo" listKey="code" listValue="name"
headerKey="" headerValue="请选择" value="condition.isEqual" >
</s:select>
此时下拉框中选择就会出现enum中定义的属性
以上是正常的属性选择展示,下面描述一些常见的错误:
<s:select>标签属性:
headerValue : 默认值value
headerKey : 默认name
list : 源数据 (可以在action方法里从数据库获取list)
name : 被选数据存放的位置(需在action类中定义该对象)
listKey : 下拉选项的name
listValue : 下拉选项的value
value : 默认值
<s:select>标签的name属性存放的是listKey的值,而不是listValue的值,listValue是显示出来的值。
如果展示的下拉列表为空,首先要定位错误原因:
比如:
点击选择列表时候展示空白,浏览器F12进去定位到此处可以看到
此时的value是有数据的,证明数据已经正常传输了,只是获取不到对应的name,即展示的listValue为空,此时应该检查前面编写的EqualOrNoEnum 类是否正常添加了getCode()和getName()方法。
注意方法命名,如写了getname(),也会导致获取失败,建议用系统自动生成的getter(enum类不写setter方法)。