假设项目的路径如下:
http://localhost:8080/project1/当前页面 http://localhost:8080/project1/test/test1.jsp
我要在test1.jsp页面中用js 修改document.href.location属性为test2/test1.jsp
我的写法如下: document.href.location="/project1/test2/test2.jsp"
以上写法是可以的,但缺点是必须写死 /project1 这相根目录,当我的项目改名为project2 的时候,所有相关的js都要修改. 
所以,我的问题是,js 能否用相对路径访问project1/test2/test.jsp? 
我尝试过的做法: document.href.location="/test2/test2.jsp" 或 document.href.location="../test2/test2.jsp" 都不行,提示找不到这个url

解决方案 »

  1.   

    上面的href.location应该改为 location.href 
      

  2.   


       request.getContextPath()+路径
      

  3.   


    request.getContextPath()+"/test2/test2.jsp"
      

  4.   

    是javascript 不能用jsp代码,因为我写在js文件内.但是,我刚才新建了一个项目试了一下我提到的情况,好象又可以了,再看看为什么在另一个项目中不行.
      

  5.   

    确实挺麻烦的,我试了也不行
    这样可以<script type="text/javascript">
        var pathname=window.location.pathname;
        var arr=pathname.split("/");
        var proName=arr[1];
        window.location.href="/"+proName+"/test2/test2.jsp";
    </script>
      

  6.   

    没解决掉的话,你可以用这种方法:在js里做个action,让它到action里处理
    var url = "***.do?method=abc"
      

  7.   

    有一种偷巧的办法:你在JSP文件里面定义一个全局变量,比如 var baselocation;
    <script language="javascript">
        var baselocation='<%=request.getContextPath()%>';
    </script>
    后面你就可以用它了
      

  8.   


    这个是标准用法吧,struts in action中推荐的