Chinaunix首页 | 论坛 | 博客
  • 博客访问: 382798
  • 博文数量: 80
  • 博客积分: 2682
  • 博客等级: 少校
  • 技术积分: 907
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-16 09:55
文章分类

全部博文(80)

文章存档

2012年(80)

分类: 系统运维

2012-06-29 16:10:08

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属性值

阅读(1474) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~