有时,我们的代码需要为资源创建链接。发生这种情况时,它看起来如下所示:
<link rel="stylesheet" type="text/css"
href="${resource(dir: '/css/', file: 'UXdashboard-pdf.css') }"
media="all"/>
但是,这会创建一个如下所示的链接(注意重复的应用程序上下文)
<link href="/ici/ici/css/UXdashboard-pdf.css" media="all"
我们没有定义 grails.serverUrl 或 grails.app.context。我们确实在 application.properties 中设置了 app.name='ici'。
我们使用设置了 autodeploy="true"的 tomcat 进行部署,它应该根据 war 文件名创建“ici”的应用程序上下文。
我不确定第二个应用上下文来自哪里。我不应该在 application.properties 中设置 app.name 吗?我可以指定 'base' 参数,但我更愿意在尝试解决它之前准确了解重复上下文的来源。
我们使用 apache 作为我们的前端文档服务器,并且 apache 似乎能够处理这些链接,因为我看到为它们返回了 200 个代码。但是我们有一个可以生成 pdf 的插件,我怀疑它因为链接而找不到 css 文件。
谢谢!
最佳答案
我实际上是在回答我自己的问题,以防其他人遇到这种情况。结果是双/<appcontext>/<appcontext>
是由 grails.resources.uri.prefix ="ici"引起的。
我们还使用与 g:resource 标签集成的 Resources 插件。资源插件在形成其 url 时会自动添加一个/static/目录。我们不使用静态子目录,grails.resources.uri.prefix 允许覆盖它。仅仅将它设置为空字符串是行不通的,但是 apache 可以处理 <appcontext>/<appcontext>
.所以在pdf生成案例中我需要做的就是重写这个链接。
关于tomcat - grails 资源标签在链接中创建重复的应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055092/