Taglib не обрабатывает CSS, ссылающийся на внешнюю папку
При переходе с Grails 2.5 на Grails 3 рекомендуется не использовать подключаемый модуль ресурсов, поскольку подключаемый модуль ресурсов Grails 3 является устаревшим. В качестве альтернативы я использовал конвейер ресурсов. Есть ли рекомендуемый метод замены модулей подключаемых модулей ресурсов при переходе на подключаемый модуль конвейера ресурсов? Пользовательские теги используются в файлах GSP, которые, как предполагается, включают содержимое из файлов CSS. В настоящее время я создаю пустые файлы.js или.css, которым требуются ресурсы, которые были в модуле, а затем заменяю содержимое CSS, ссылаясь на пустой файл. Есть ли способ лучше?
<html>
<head>
<g:layoutHead/>
<r:layoutResources />
<r:external uri="/css/mycss.css" type="css" />
<g:customStylesheetIncludes/>
</head>
<body>
<g:layoutBody/>
<r:layoutResources />
</body>
</html>
Это будет обрабатывать настраиваемая библиотека тегов:
class MyResourcesTagLib {
def customStylesheetIncludes = { attrs ->
def controller = attrs.controller ?: controllerName
def action = attrs.action ?: actionName
writeCssIfExists( out, "css/my-custom.css" )
// Determine the current page
writeCssIfExists( out, "css/views/$controller/${action}-custom.css" )
}
private resourceExists( resPath ) {
return grailsApplication.parentContext.getResource( resPath ).file.exists()
}
private writeCssIfExists( writer, css ) {
if (resourceExists(css)) {
def baseUri = grailsAttributes.getApplicationUri(request)
baseUri += (baseUri.endsWith('/') ? '' : '/')
writer << r.external(uri: baseUri, type: 'css')
}
}
}
Как я могу справиться с тем же, используя конвейер ресурсов в Grails 3, любые предложения или рекомендации приветствуются
1 ответ
Возможный обходной путь - создать задачу Gradle, которая копирует эти ресурсы из внешней папки в соответствующие папки grails-app/assets.