JSR303使用GWT RequestFactory本地化消息

时间:2012-01-24 09:58:03

标签: gwt internationalization bean-validation requestfactory

当RequestFactory使用jsr303验证器验证我的域对象时,它会获得本地化的约束违规消息和消息密钥。我对代码进行了调试,并且在服务器端使用默认语言环境,无论客户端使用何种语言环境。我也没有在有效负载中找到任何区域设置。

是否有任何关于如何使用RequestFactory和BeanValidation处理本地化的示例? 邮件应该在客户端还是服务器端进行转换? 什么是最佳实践?

谢谢!

1 个答案:

答案 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