c:url标记在连续的行之间给出不同的结果

时间:2015-04-23 11:46:51

标签: java url jboss tags jstl

我对这个案子发疯了。环境是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标记的行为在所有文档中都是一致的。

提前谢谢。

2 个答案:

答案 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相对较少。