当上下文根是root时,如何使用#{request.contextPath}:“/”?

时间:2017-09-11 19:04:44

标签: jsf-2 el

我们目前正在将EE6 / JSF应用程序从部署路径someserver.com/app移动到其自己的子域app.someserver.com

大多数事情都在顺利进行,但我们遇到了意外的问题,即网络层如何处理现在基本上不存在的上下文根。

我们发现并早期修复的一件事是我们设置的cookie的路径从"/app"缩短为"",因此只能在服务器上的每个文件夹中读取,而不是整个应用程序。

我们现在发现了一个类似的问题,我们在JSF中生成超链接:

<a href="#{request.contextPath}">Go to home page</a>

以前呈现为href="/app"并且工作正常,但现在href=""链接可以理解为不再有效。我希望它说href=""/"

有一个优雅的解决方案吗?

请注意,我们还有表格链接

<a href="#{request.contextPath}/projects">Go to projects page</a>

,所以简单地用"/"替换空的上下文路径是不够的。

我错过了一些明显的东西吗?我看到了一个解释here(符合我们的经验),但没有详细说明可能的解决方案。

1 个答案:

答案 0 :(得分:1)

原来我没有想清楚。我非常专注于修复#{request.contextPath}产生的字符串,我错过了我在整个时间里错误地使用它。

最简单的解决方案是使用

<a href="#{request.contextPath}/">...</a>

(带斜杠)到达应用程序的根目录,永远不要使用href="#{request.contextPath}"而不使用斜杠。

这解决了这两种情况。如果将应用程序部署到“some_folder”,则链接将变为"some_folder/"。如果将应用程序部署到服务器根目录,则链接将变为"/"

希望这可以帮助那些偶然陷入困境的人。