2010-10-19 58 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