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国际化