classloader.getResource(..)
возвращает URL
, поэтому просто примените getText("UTF-8")
к URL
:
String content = classloader.getResource("datasource/${name}.txt")?.getText("UTF-8")
или:
String content = classloader.getResourceAsStream("datasource/${name}.txt")?.getText("UTF-8")
Легкое решение сохранить Ваш JavaScript незаметным состоит в том, чтобы создать JavaScriptController и отобразить его действия "/js /*" путем добавления этого к Вашему UrlMappings.groovy
файл:
"/js/$action"{
controller = "javascript"
}
затем просто создайте действие для каждого динамического файла JS, который Вы хотите, включаете в в Вашем расположении <ГОЛОВА>, и престо, у Вас есть файл JS, в который можно вставить отрывки Grails!:)
Примечание: Я нашел, что в настоящее время существует ошибка в Grails, который не отображает расширения файла на типы контента правильно, таким образом, необходимо будет включать <%@ page contentType="text/javascript; UTF-8" %>
наверху Ваших файлов представления.
Или это... имеет метод тега/сервиса/динамичного, который позволяет тегам еще выписать свой JS+CSS+whatever к "кэшу", который используется для создания ресурсов JS+CSS другим контроллером.
Полное понятие здесь: [http://www.anyware.co.uk/2005/2009/01/19/an-idea-to-give-grails-tags-esp/] [1]
Существует иначе - передают в сгенерированном коде в функцию, которая ожидает закрытия. Те закрытия сгенерированы программой, конечно. Сгенерированный код, конечно, inlined/script-tagged на gsp странице.
это может или не может работать в зависимости от природы сгенерированного кода. Но я подозреваю, что это будет работать, и если это не сделает, то незначительная тонкая настройка к стилю кодирования Вашего JavaScript определенно заставит его работать. Хотя, если они 'сгенерировали' код, не изменяется очень, это вполне излишество imo.
Это отличное решение. Я хотел бы предложить вам использовать что-то другое, кроме отображения
"/js/$action", потому что это больше не позволит вам получить доступ к файлам javascript в / web-app / js /. Все ваши файлы javascript необходимо переместить в каталог, на который будет указывать ваш контроллер.
Я бы использовал что-то вроде
"/dynjs/$action"
Таким образом, вы по-прежнему можете указывать на файлы в / web-app / js / files без конфликтов и пользоваться преимуществами тегов gsp в файлах javascript.
Поправьте меня, если я Я ошибаюсь.