【问题标题】:JSR303 localized messages with GWT RequestFactory使用 GWT RequestFactory 的 JSR303 本地化消息
【发布时间】:2012-01-24 09:58:03
【问题描述】:
当 RequestFactory 使用 jsr303 验证器验证我的域对象时,它会获得本地化的约束冲突消息和消息密钥。我调试了代码,在服务器端,无论客户端使用什么语言环境,都使用默认语言环境。我也没有在有效负载中找到任何语言环境设置。
是否有任何示例如何结合 RequestFactory 和 BeanValidation 处理本地化?
消息应该在客户端还是服务器端进行翻译?
最佳做法是什么?
谢谢!
【问题讨论】:
标签:
gwt
internationalization
bean-validation
requestfactory
【解决方案1】:
我没有找到任何解决这个问题的蓝图,所以我实现了自己的机制。
我将当前选择的语言作为属性添加到标题中,并在服务器端从标题中读取语言。
客户端:
MyRequestFactory factory = GWT.create(MyRequestFactory.class);
factory.initialize(new SimpleEventBus(), new DefaultRequestTransport() {
@Override
protected void configureRequestBuilder(RequestBuilder builder) {
super.configureRequestBuilder(builder);
builder.setHeader("X-GWT-Language",
LocaleInfo.getCurrentLocale().getLocaleName());
}
});
服务器端(Grails):
def index = {
String gwtLanguage = request.getHeader("X-GWT-Language")
if(gwtLanguage){
Locale gwtLocale = new Locale(gwtLanguage)
RequestContextUtils.getLocaleResolver(request).setLocale(request, response, gwtLocale)
}
// ... Handle the RequestFactory request