0
A
回答
0
我發現workaround,我認爲它可以幫助..
1的toString()
正如您所知,腳手架屏幕僅通過所示對象的toString()方法在選擇和下拉列表中輸出值。我們可以用硬編碼的翻譯構造每個枚舉,並且toString()返回該值。
class Product {
enum Status {
AVAILABLE("Beschikbaar"), SOLD_OUT("Uitverkocht")
final String value
Status(String value) {
this.value = value
}
String toString() {
value
}
}
String name
Status status
static constraints = { name blank: false, unique: true }
}
枚舉的實際名稱現在只出現在生成的HTML:
<select name="status" required="" id="status" >
<option value="AVAILABLE" >Beschikbaar</option>
<option value="SOLD_OUT" >Uitverkocht</option>
</select>
2. MessageSourceResolvable
現在,你可能會明白上面的硬編碼解決方案僅適用於一種語言,其中一種硬編碼在enum中elf - 從現在起,應用程序實際需要支持第二種語言時會導致問題:-)那麼我們如何利用事實,即我們已經在其中放置了其他消息密鑰的message_XX.properties? 使用底層的Spring框架。讓我們的枚舉實現org.springframework.context.MessageSourceResolvable例如像這樣:
enum Status implements org.springframework.context.MessageSourceResolvable {
AVAILABLE, SOLD_OUT
public Object[] getArguments() { [] as Object[] }
public String[] getCodes() { [ name() ] }
public String getDefaultMessage() { "?-" + name() }
}
現在我們可以爲每一個枚舉提供我們messages_nl.properties值有:
product.label=Product
product.name.label=Naam
product.status.label=Status
AVAILABLE=Beschikbaar
SOLD_OUT=Uitverkocht
相關問題
- 1. JavaME國際化(國際化)
- 2. Rails 3 ActiveForm國際化(國際化)
- 3. PHP國際化
- 4. Spring國際化
- 5. PyQt國際化
- 6. Log4j國際化
- 7. 國際化與
- 8. YAML國際化
- 9. GWT國際化
- 10. Rails國際化
- 11. Struts2 +國際化
- 12. Batmanjs國際化
- 13. 國際化mx:MenuBar?
- 14. 國際化
- 15. Spring國際化
- 16. 國際化sitemesh
- 17. Mono國際化
- 18. Java國際化
- 19. jqGrid國際化
- 20. activeadmin +國際化
- 21. 國際化QNames/CURIs
- 22. 國際化驗證
- 23. Cakephp 2.6國際化
- 24. Python國際化(gettext)
- 25. 國際化與jQuery
- 26. JavaScript內國際化
- 27. Spring MVC國際化
- 28. Struts2 +國際化+ Java
- 29. Drupal的國際化 -
- 30. Android WebView國際化