play-framework получает дату последнего изменения для файла

#java #file-io #playframework

#java #file-io #playframework

Вопрос:

Приложение PlayFramework, footer.html файл:

 %{
 file = new File("footer.html");
 path = file.getCanonicalPath();
 lm = file.lastModified();
 // date = new Date(lm);
}%

<span> Last update: ${lm} </span>
  

Здесь у меня правильный путь, поэтому footer.html существует.

Но lm равен 0, т.Е. Это 1970 год .. но сейчас 2011 год.

Вопрос: почему? Может ли это быть как-то связано с security-manager или чем-то, связанным с безопасностью?

Ответ №1:

Вы можете проверить ${file.exists()} ?

Я думаю, что происходит то, что ваш файл «footer.html » не существует, потому что play будет использовать скомпилированные представления (обычно в папке temp / bytecode / DEV), а в скомпилированных представлениях этот файл не существует

Даже если вы измените скомпилированное имя файла, оно не будет работать на сервере, поскольку датой изменения файла в сборке будет дата сборки.

Комментарии:

1. это существует, потому что у меня есть правильная переменная PATH при выполнении file.getCanonicalPath();

2. подождите, да, вы были правы: это false. но как возможно, что у меня есть правильный путь от этого?

3. Я пробовал new File("app/views/Application/index.html"); , и он указал правильное время. Вероятно, вы что-то упускаете в своем canonicalPath.

4. да, теперь он работает, но событие только с «новым файлом («footer.html «) «я возвращаю меня к этому пути: app/views/tags/footer.html