当RequestFactory使用jsr303验证器验证我的域对象时,它会获得本地化的约束违规消息和消息密钥。我对代码进行了调试,并且在服务器端使用默认语言环境,无论客户端使用何种语言环境。我也没有在有效负载中找到任何区域设置。
是否有任何关于如何使用RequestFactory和BeanValidation处理本地化的示例? 邮件应该在客户端还是服务器端进行转换? 什么是最佳实践?
谢谢!
答案 0 :(得分:3)
我没有找到任何蓝图来解决这个问题所以我实施了自己的机制。 我将当前选择的语言添加为标题的属性,在服务器端我从标题中读取语言。
客户方:
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