2010-10-19 56 views
0

是否可以在Struts2 IntRangeFieldValidator中使用java.util.Calendar?我可以在Struts2 Validator注解中使用日历吗?

以下代码不会产生任何OGNL错误,但也不起作用。我试图创建一个年份范围的验证规则,分钟= 1970,最大=当前日历年。

@RequiredFieldValidator(message="Year cannot be blank") 
@IntRangeFieldValidator(message="Year must be greater than 1970", min="1970", max="java.util.Calendar.getInstance().get(java.util.Calendar.YEAR)", fieldName="year") 
    public Integer getYear() { 
     return year; 
    } 

有没有更好的方式来做到这一点,而无需编写自定义验证程序? 任何/所有的答复表示赞赏。提前致谢!

回答

0

我觉得应该是:

@[email protected]().get(@[email protected]) 

得到证实。

+0

都能跟得上。没有工作。 (还是)感谢你的建议。 – Griff 2010-10-19 18:59:01

+0

@Griff太糟糕了。我知道它在JSP中起作用;也许“@”语法不能用在注释中,因为它们已经在使用这个字符了?无论如何,祝你好运。 – KeatsPeeks 2010-10-19 19:09:25

0
+0

这不是一个真正的日期字段,它只是一个代表一年的数字字段。 – Griff 2010-10-19 20:03:13

+0

如果您将最大参数硬编码为“2010”,然后尝试输入2011,该怎么办?那它有用吗?如果是这样,也许它希望从日历返回的int显式转换为String值? String.valueOf(java.util.Calendar.getInstance()。get(java.util.Calendar.YEAR)) – 2010-10-19 21:10:48

+0

有趣的想法。 String.valueOf(java.util.Calendar.getInstance()。get(java.util.Calendar.YEAR))也没有工作。 – Griff 2010-10-20 16:35:30

0

尝试以这种方式使用@FieldExpressionValidator:

@FieldExpressionValidator(fieldName = "year", message="Year must be greater than 1970", 
expression = "year < @[email protected]().get(@[email protected])") }) 
+1

始终验证失败... \t @FieldExpressionValidator(消息= “年份必须小于当前的年份。”,fieldName的= “年”, \t \t \t表达=“年<@ java.util.Calendar中@的getInstance( ).get(@ java.util.Calendar @ YEAR)“) public Integer getYear(){ return year; } – Griff 2010-11-22 20:18:12