Ajax形式的国际化响应提示
前端渲染形式的国际化不再说,现在实现一个 ajax形式的国际化,基于 jackson 的自定义序列化
// 实现序列化接口
public class I18nMessageSerializer extends com.fasterxml.jackson.databind.ser.std.StdSerializer<String> {
public I18nMessageSerializer() {
super(String.class);
}
protected I18nMessageSerializer(Class<String> t) {
super(t);
}
@Override
public Class<String> handledType() {
return String.class;
}
@Override
public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
// 这里我假设以 @i18n. 开头的都是需要国际化的,规则自己定义
// 至于 当前环境是什么,可以通过session的形式进行保存(或者你想到的任何形式),然后在这里进行处理
// Session.getAttribute("xxxx")
if (StringUtils.isEmpty(s) || !s.startsWith("@i18n.")) {
jsonGenerator.writeString(s);
} else {
String s1 = s.substring(6);
}
}
}
//然后在你需要的国际化字段 进行声明处理
public class Response {
// 状态码
private Status status;
// 提示消息 使用自定义的序列化
@JsonSerialize(using = I18nMessageSerializer.class)
private String message;
}