2012-05-25 62 views
2

如何在struts 2中更改java.util.Date對象的格式。我測試過的,Struts 2接受m/d/yy。可以更改格式嗎?在Struts2中輸入日期

還有如何更改默認消息「字段日期的無效字段值」?

struts2中的日期標記只能用於輸出。

+1

這是一個有點混亂...通過接受你的意思是什麼是輸入?在這種情況下,日期格式預計基於用戶區域設置。如果你的意思是在JSP上格式化,我會說這是一個不同的問題,但我希望有一個設置可以全局設置格式,我不認爲這是一個問題。 mprabhat顯示瞭如何在JSP端進行格式化。 – Quaternion

+0

是的。接受,我的意思是輸入。如果可能,我希望我的用戶輸入不同的格式。 –

回答

2

你可以通過格式s:date標籤

<s:date name="myDate" format="yyyy-MM-dd" /> 

要更改默認的錯誤消息,在您的validation.xml您可以在ApplicationResources.properties文件中添加消息參數

<field name="myDate"> 
     <field-validator type="date"> 
      <message key="errors.myDateRequired" /> 
     </field-validator> 
    </field> 

然後,你將提供價值errors.myDateRequired

更新:按照評論

s:date只是一個只讀標籤,意味着它不能用於接受來自用戶的輸入。

爲使文本字段接受日期不同的格式,兩個方法:一個

  1. 使用struts2的,jQuery插件,它有一個非常漂亮的日期選擇器支持不同的日期TIMEFORMAT,showcaseDatePickerTag
  2. 自定義JavaScript代碼來格式化用戶輸入。
  3. 使用jQuery(如果允許),並使用jQuery日期選擇器

可以使用自定義轉換器使用文本字段,日期,example

+0

標籤將格式化顯示。我想要的是允許用戶在文本框中輸入不同的格式。 –

+0

更新了我的帖子 – mprabhat

+0

,因此無法在沒有客戶端腳本的情況下在struts2中進行設置?好,謝謝。 –

0

的日期格式的Struts接受取決於用戶的語言環境。所以對於不同的語言環境,你可以有不同的日期格式。這樣你就不能支持同一地區的多種日期格式,但我不明白你爲什麼需要這個,這隻會讓你的用戶感到困惑。支持不同日期格式的相同語言環境的唯一方法是使用@mprabhat註釋的自定義日期轉換器。

0

你可以看到官方文檔關於這一點:

定義格式爲每一種語言Y中的資源包。舉例來說,適當的EN_US格式定義擴展看起來是這樣的:

format.date = {0,date,MM/dd/yy} 

同時,你可以添加以下到您的de_DE這個包:

format.date = {0,date,dd.MM.yyyy} 

http://struts.apache.org/2.1.6/docs/formatting-dates-and-numbers.html