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;
}