2015-12-03 6 views
0

Я пытаюсь включить JS-скрипт в файл шаблона уса.Scala: Как включить JS-скрипт в шаблон Mustache в Finatra?

<html> 
<head> 
    <script id="{{app.js}}" type="text/mustache"></script> 
</head> 
<body> 
<div> 
    Users: 
    <ul> 
     {{#users}} 
      <li>{{name}}</li> 
     {{/users}} 
    </ul> 
</div> 
</body> 
</html> 

Он расположен в src/main/resources/templates/users.mustache. Также у меня есть сценарий JS в src/main/resources/public/app.js.

Несколько слов о бэкэнд. Я использую Finatra рамки с поддержкой усов из коробки:

get("/users") { 
    req: Request => { 
     response.ok.view("/users.mustache", Users) 
    } 
    } 

Так вот мой вопрос. Как добавить JS-скрипт в мой шаблон Mustache?

UPD

Я также попытался использовать

<script src='{{path}}/public/app.js' type='text/javascript'></script> 

Но мое приложение по-прежнему не видит сценарий.

UPD2 (ТНХ к @nuc)

я не нашел хорошее решение, но только это одно:

get("/public/:*") { 
    req: Request => { 
    req.params.get("*") match { 
     case Some(fn) => 
     val file = new File("/Users/fink/projects/finatra-demo/src/main/resources/public/" + fn) 
     response.ok.file(file) 
     case None => { 
     response.notFound("Oh no!") 
     } 
    } 
    } 
} 

Я поместил все активы

src/main/resources/public/* 

И на мой взгляд, это должно быть <script src='/public/js/app.js' type='text/javascript'></script>

ответ

-1

У вас должен быть дополнительный маршрут для обслуживания вашего js-файла, названного в префиксе/соглашении, которое вы используете.

get("/assets/js/:file") { request: Request => 
    response.ok.file(request.getParam(file)) 
} 

См http://twitter.github.io/finatra/user-guide/files/

+0

Это хороший момент. См. Мое обновление. Но до сих пор неясно, как получить статические файлы. – Finkelson

+0

Функция 'response.ok.file (String)' не работает должным образом. Это дает '404 Not Found'. – Finkelson

+0

Определения функций: 'file (file: String)' и 'fileOrIndex (filePath: String, indexPath: String)'. Они используют параметр '-doc.root' как идентификатор местоположения. Удалите 'new File()' и просто поместите строку в функцию, поскольку она уже указывает на 'src/main/resources'. – thepratt