2009-07-04 167 views
3

我正在創建一個表單,用戶將在其中註冊一個struts2應用程序。用戶需要以特定格式輸入日期。struts2中的日期驗證

因爲我不打算使用的日期選擇器的ajax標籤,我使用帶有日期標籤的文本框的形式是這樣的:

<s:date name="birthDate" id="bDateId" format="yyyy-MM-dd"/> 
<s:textfield name="birthDate" id="%{bDateId}" label="Birth Date (yyyy-MM-dd)"/> 

的基本用戶實體有一個字符串字段表示日期。所以我的問題是,是否有一種直接的方式來對日期字段的用戶輸入格式應用驗證。由struts2提供的日期驗證器只能用來檢查日期範圍,但不能檢查特定的格式。

有人會推薦一種方法來做到這一點,或不會;不介意指向一個自定義驗證器的例子嗎?

謝謝你的建議 問候所有

回答

1

你也許可以很容易地用正則表達式驗證驗證這一點。喜歡的東西:

<field name="birthDate"> 
    <field-validator type="regex"> 
     <param name="expression">[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]</param> 
     <message>The value must be in the format yyyy-MM-dd</message> 
</field-validator> 

+0

如果你的對象是一個日期,它不會馬上工作,你需要使用一個String對象來保存的價值,然後將其傳送... – tinky05 2010-04-15 15:24:01

+1

它驗證3333-33 -33作爲日期,所以它不能使用 – batbaatar 2012-01-25 14:16:20

1

你可以用一個日期驗證驗證這一點。喜歡的東西:

<field name="fecha"> 

     <field-validator type="date"> 
      <param name="min">01/01/1900</param> 
      <param name="max">01/01/9999</param> 
      <message key="error.fecha.rango.invalido"/> 
     </field-validator>  
    </field>