我对这个案子发疯了。环境是CentOS Linux 7.0.1406版本下的Jboss-as-7.1.1。
这是代码(只是暴露我案例的那篇文章):
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<link rel="stylesheet" type="text/css" href="<c:url value="/assets/css/styles.css" />" />
<link rel="stylesheet" type="text/css" href="<c:url value="/assets/css/checkbox.css"/>" />
<c:set var="urlImgLoadingGIF"><c:url value="/img/ajax-loader.gif"/></c:set>
<c:set var="urlImgLoadingGIF2"><c:url value="/assets/css/checkbox.css"/></c:set>
<script type="text/javascript">
var urlImgLoadingGIF = "${urlImgLoadingGIF}";
var urlImgLoadingGIF2 = "${urlImgLoadingGIF2}";
</script>
这是输出:
<link rel="stylesheet" type="text/css" href="/assets/css/styles.css;jsessionid=AQvp3fDjrDIOArTZebuDllp1.undefined">
<link rel="stylesheet" type="text/css" href="/assets/css/checkbox.css;jsessionid=AQvp3fDjrDIOArTZebuDllp1.undefined">
<script type="text/javascript">
var urlImgLoadingGIF = "/seuapb/img/ajax-loader.gif;jsessionid=AQvp3fDjrDIOArTZebuDllp1.undefined";
var urlImgLoadingGIF2 = "/seuapb/assets/css/checkbox.css;jsessionid=AQvp3fDjrDIOArTZebuDllp1.undefined";
</script>
为什么在css链接中,c:url标记不会渲染上下文(/ seuapb /)并在它之后呈现一行?
我在开发环境中有tomcat,这不会发生,c:url标记的行为在所有文档中都是一致的。
提前谢谢。
答案 0 :(得分:0)
这并没有具体回答你的问题,但下面链接的StackOverflow问题的解决方案更加明确,因此可读/可维护,恕我直言。它为您提供了另一种解决方案,可以解决您想要做的事情,但无法解释您遇到问题的原因。
How to use relative paths without including the context root name?
答案 1 :(得分:0)
最后,经过多次测试,我们得出结论,某些进程(可能在apache http服务器内部)正在修改某些URL。由于href和src属性中的URL未被修改,我们决定在href属性中添加一些隐藏的html锚点,以及我们想要的url,然后使用javascript获取它。
我知道这是一个非常奇怪的案例,但如果有人值得,这是一个可能的解决方案。
显然我们也可以检查apache服务器,但客户已安装它,并且更愿意调整我们的应用程序,因为有这个问题的URL相对较少。