2013-08-22 158 views
3

我試圖更改驗證消息的文本顯示在遊戲框架創建播放框架表單驗證消息

enter image description here

的文字,如「必需的」我的形式,「數字','Date(yyyy ...)'會根據綁定到表單域的屬性的類型自動顯示。

@implicitFieldConstructor = @{ 
    FieldConstructor(twitterBootstrapInput.f) 
} 

<fieldset> 
    @inputText(productForm("id"), '_label -> "Product id") 
    @inputText(productForm("info.name"), '_label -> "Name", 'placeholder -> "Product Name") 
    @inputText(productForm("info.code"), '_label -> "Code") 
    @inputText(productForm("info.weight"), '_label -> "Weight") 
@inputDate(productForm("info.dateAdded"), '_label -> "Date Added") 
</fieldset> 

這一切都很不錯,但我不知道如何改變它。是否有可能通過使用@inputText元素的某些屬性,例如。像'_helpinline -> "Please enter the name"(我確實尋找這樣的水手,但找不到任何東西),也許有其他方式的人使用?

這些消息顯示在Twitter引導help-inline樣式元素中。

回答

1

雖然可以通過將message參數傳遞給約束註釋(如@Required(message = "abc"))來輕鬆更改錯誤消息,但這對於這些信息並不正確。實際上,這就是它們被定義的地方:在一個註釋中註釋了自己的註釋(so meta)。如果我解釋太困難,只需要see source。請注意0​​一行。

那麼,我們可以用這個做什麼?

選項1:如果您想要更改爲全部 @必填字段。如您所見,此註釋並未定義消息本身,而是其本地化密鑰。所以,你可以在你的本地化覆蓋此,只是通過添加下面的行放在conf/messages.en

constraint.required=This is so very required! 

然後到所有其他語言文件。

選項2:如果您希望每個輸入都有不同的消息給出作爲參數。那麼你完全不需要進入這個驗證機制,你可以修改你的字段構造函數。內置twitter bootstrap字段構造器的Here is the source。通過複製來製作你自己的(如果你還沒有的話),並把你想要的東西放入<span class="help-inline">。例如,爲了處理'_helpinline -> "Please enter the name",該14'th行可能是以下:

<span class="help-inline"> 
    @elements.args.get('_helpinline).getOrElse(elements.errors(elements.lang).mkString(", ")) 
</span> 

你看,我把初值爲getOrElse,因此,如果您不提供默認的信息用於任何'_helpinline

選項3:如果您希望每個輸入都有不同的信息,可以通過註釋進行定製,如@Required(message = "abc")然後,您可能需要製作自己的自定義@Require註釋,方法是從the source對其進行復制並進行一些修改。這是最棘手的選擇,我認爲選項2更好,但仍然知道如何製作自己的驗證器註釋非常有用,因爲它看起來並不難。

希望這些變體中的一些將有所幫助。我打賭在第二,實際上:)

+0

你知道在任何機會你可以找到默認本地化消息鍵列表(如約束。必需)? – Kris

+1

他們也在源。在這種情況下,它在https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/resources/messages – NIA