Загрузчик ресурсов файла шаблона скорости не работает

def equal_dicts(d1, d2, ignore_keys):
    d1_filtered = dict((k, v) for k,v in d1.iteritems() if k not in ignore_keys)
    d2_filtered = dict((k, v) for k,v in d2.iteritems() if k not in ignore_keys)
    return d1_filtered == d2_filtered

EDIT: это может быть быстрее и экономичнее:

def equal_dicts(d1, d2, ignore_keys):
    ignored = set(ignore_keys)
    for k1, v1 in d1.iteritems():
        if k1 not in ignored and (k1 not in d2 or d2[k1] != v1):
            return False
    for k2, v2 in d2.iteritems():
        if k2 not in ignored and k2 not in d1:
            return False
    return True
0
задан SinhaOjas 17 March 2019 в 21:07
поделиться

1 ответ

Если вы уверены, что рабочий каталог не изменяется между временем создания шаблона и временем его чтения, то вам не нужно устанавливать какое-либо свойство перед инициализацией Velocity: [1110 ]

  • вам не нужен IncludeRelativePath, поскольку его цель - позволить #include () и #parse () находить шаблоны в том же каталоге, что и текущий шаблон. Это не относится к вашему случаю использования.
  • Вам не нужно устанавливать загрузчик ресурсов file, потому что он установлен по умолчанию.
  • вам определенно не нужно устанавливать класс загрузчика ресурсов classpath, потому что вы даже не используете его
  • вам не нужно устанавливать путь к загрузчику файловых ресурсов, потому что он по умолчанию к ".".

Я не знаю, почему ваш код работает локально, а не в производство. Возможно, рабочий каталог изменился. Возможно переменные templateName и fileName не согласованы. Возможно, шаблон запрашивается до того, как он будет написан. Есть ли серьезные различия между средами? Есть проблемы с безопасностью? Операционные системы одинаковы? Как отметил soorapadman, это может быть проблема с чувствительностью к регистру между Linux и Windows.

Следующий код должен работать везде:

VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
PrintWriter out = new PrintWriter("test.vm");
out.println("hello");
out.close();
Template template = velocityEngine.getTemplate("test.vm");
0
ответ дан soorapadman 17 March 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: