在Spring应用程序中进行JSPX解析后的jQuery错误

时间:2012-06-06 09:11:04

标签: jquery spring jsp

我有一个非常奇怪的问题: 我在我的应用程序中使用Spring Framework 3.0.5。为了呈现视图,我使用了Tiles Framework。

这是布局jspx文件的来源:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tiles="http://tiles.apache.org/tags-tiles" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" >  
<jsp:output doctype-root-element="html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>          
<jsp:output omit-xml-declaration="yes"/>

<head>

</head>

<body>
    <script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/jquery.js"></script>
    <img id="testimg" src="${pageContext.request.contextPath}/resources/images/logo.png" onclick="$(this).fadeOut()" />
</body>

现在问题是:每次加载页面时,我都会从jQuery调用中得到一个JavaScript错误,并且不再执行js代码:

    Error: c.removeAttribute is not a function

但是,如果我复制页面的源并将其粘贴到本地文件并使用浏览器打开它,一切都很好(不同的是,tomcat不提供页面)。

呈现的页面如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head />
<body>
    <script src="/myContext/resources/js/jquery.js"
    type="text/javascript">

    </script>
    <img onclick="$(this).fadeOut()"
    src="/myContext/resources/images/logo.png" id="testimg" />
</body>
</html>

图像显示正确,并且还加载了query.js。 我真的没想到了。我希望有人可以帮助我!!

提前致谢!

更新: 只有Safari和FF才会出现此效果。在谷歌C​​hrome浏览器上它可以正 我忘了提一下,我正在做一台Mac ......

1 个答案:

答案 0 :(得分:0)

您已经提到过您正在使用JSPX。我建议您尝试在<script></script>之间添加评论,即

<script ...> <!-- please keep me --> </script>

否则,JSPX编译器会将<script>标记变为<script .../>,这在浏览器呈现时会出错。 (这是我猜的,我认为应该是对的。)

我不知道详细的原因,但我遇到了同样的问题,并且我使用该方法修复了它。如果你能找出详细的原因,请告诉我。

谢谢!