enum是枚举类型。到现在 我也没有搞明白
,到底他是一个类还是一个基本类型(感觉好像很别扭)。
现在讲讲在Struts2中我使用枚举来显示一些常量吧。
需求是在页面上显示一个下拉列表框,原来定义是这样的。
但是我觉得太多的list如果都在页面定义的话,如果需要修改就出问题了。所以最好能用常量。于是出来另一种思路list的定义使用常量的方式如
list=#{@my.Helper@AND:“并且”,@my.Helper@OR:“或者”},其中my.Helper是我定义的一个写常量的类,AND
OR是这个类里面的字符串常量。通过ognl的方式取出这个值,但是在这里会出错,不知道为什么。
同学中有两外一种解决思路是使用这样
其中在QuestionType类中定义了questionType是一个Map对象,并有该对象的get方法,从而可以动态的生成map,从而显示列表,这个思路非常好。强烈建议使用。可以在整个项目中定义一个专门管理list常量的这样一个类,也可以在项目中每个模块下各自定义各自的list。
我吧就非得想使用enum方法,摸索了一下午终于能显示了,但是遗憾的是还是不懂enum是什么。我的做法是页面上使用
其中QueryHelper源文件如下:
package
ksei.query;
public class QueryHelper {
public static JOIN[] join =
JOIN.values();
public static enum JOIN{
AND("并且"," and "),OR("或者"," or
");
private String label;
private String value;
JOIN(String
label,String value){
this.label = label;
this.value =
value;
}
public String getValue(){
return value;
}
public String
getLabel(){
return label;
}
}
public static enum
OPERATION{
EQUAL(" = "),NOT_EQUAL(" != "),
LIKE(" like "),NOT_LIKE(" not
like "),
IN(" in "),NOT_IN(" not in ");
private String
value;
OPERATION(String value){
this.value = value;
}
public String
getValue(){
return
value;
}
}
}
其中很明显是先自己定义了两个enum常量OPERATION和JOIN,但是这个时候如果在客户端使用"@ksei.query.QueryHelper@JOIN并不能获得任何东西,但是也不提示错误。后来又加上了join变量使用JOIN的values方法,这样在客户端就可以显示了。
继续研究enum。。。
刚刚重新生成一次enum,这次是在一个包里面像定义一个类一样的定义一个enum变量。如下
package
ksei.query;
public enum JoinEnum {
AND("并且"," and "),OR("或者"," or
");
private String label;
private String value;
JoinEnum(String
label,String value){
this.label = label;
this.value =
value;
}
public String getValue(){
return value;
}
public String
getLabel(){
return label;
}
}
这样的话在客户端就可以获得了如下
可以进行遍历。
取第二个变量的label属性值
阅读(1506) | 评论(0) | 转发(0) |