yanfuhai 2015-11-06 08:55 采纳率: 0%
浏览 1735

重写的方法作用求注释

public class RequestScopeMessageSource extends AbstractMessageSource {

private static ThreadLocal<Map<String, String>> _messageMap = new ThreadLocal<Map<String, String>>();

public static void setMessage(String code, String message) {
    Map<String, String> messageMap = _messageMap.get();
    if (messageMap == null) {
        messageMap = new HashMap<String, String>();
        _messageMap.set(messageMap);
    }
    messageMap.put(code, message);
}

public static void clear() {
    _messageMap.set(null);
}

@Override
protected String getMessageInternal(String code, Object[] args, Locale locale) {
    if (code == null) {
        return null;
    }
    if (locale == null) {
        locale = Locale.getDefault();
    }
    Object[] argsToUse = args;

    if (!isAlwaysUseMessageFormat() && ObjectUtils.isEmpty(args)) {
        // Optimized resolution: no arguments to apply,
        // therefore no MessageFormat needs to be involved.
        // Note that the default implementation still uses MessageFormat;
        // this can be overridden in specific subclasses.
        String message = resolveCodeWithoutArguments(code, locale);
        if (message != null) {
            return message;
        }
    }

    else {
        // Resolve arguments eagerly, for the case where the message
        // is defined in a parent MessageSource but resolvable arguments
        // are defined in the child MessageSource.
        Map<String, String> messageMap = _messageMap.get();
        if (messageMap != null && messageMap.containsKey(code)) {
            String message = messageMap.get(code);
            return formatMessage(message, args, locale);
        }
    }

    // Not found -> check parent, if any.
    return getMessageFromParent(code, argsToUse, locale);
}

@Override
protected String formatMessage(String message, Object[] args, Locale locale) {
    Object[] argsToUse = resolveArguments(args, locale);

    Format messageFormat;
    if (argsToUse.length == 1 && argsToUse[0] instanceof Map) {
        messageFormat = new TemplatedMessageFormat(message);
        return messageFormat.format(argsToUse[0]);
    }
    else {
        messageFormat = new MessageFormat(message);
        return messageFormat.format(argsToUse);
    }
}

@Override
protected MessageFormat resolveCode(String code, Locale locale) {
    return null;
}

}

  • 写回答

3条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-11-06 09:12
    关注

    这个没什么复杂的逻辑,就是对消息对象进行处理,setMessage把消息放到map里,后面几个就是取出,格式化等

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作