现在做东西,需要在一个普通静态页面中加短代码,但是又不让使用者感觉到,使其感觉就像普通点击就跳转的样子。我的框架是struct,hibernate,
我是这样实现的。
test.jsp:
    <tr>
    <td><a href="#" onclick="gotoLanguage(1)" >中文</a>|<a href="#" onclick="gotoLanguage(2)" target="_parent">英文</a></td>    
    </tr>
js:
function gotoLanguage(_LID)
{     thisForm = document.testForm;
    window.location.href="/nanbo/language/en_language_index_home.jsp?_LID="+_LID+"&webUrl="+document.location;}en_language_index_home.jsp:<%@ page contentType="text/html; charset=utf-8"%><%@ page import="org.caexpo.nanbo.model.TLanguage,java.util.*,java.lang.*;" %><%
request.getSession().removeAttribute("_Language");String _lid =request.getParameter("_LID");
String webUrl =request.getParameter("webUrl");
TLanguage _language = new TLanguage();if(_lid!=null) {
if(_lid.equals("1")) {
_language.setLanguageid(new Long(1));
_language.setLanguagename("中文");
}
if(_lid.equals("2")) {
_language.setLanguageid(new Long(2));
_language.setLanguagename("英文");
}
}request.getSession().setAttribute("_Language",_language);
response.sendRedirect(strwebUrl);
return; }
%>这样就有问题了。点击中文是正常跳转的。但是英文就毫无反应,就有冲突了,因为多了个target="_parent"。可我这个2个链接最终是要放到top.html里面的,是框架的头部如不不加这个,就只有头部刷了,其他的还是不变,没有意义,必须要加。所以问问,到底哪里不合理,因该怎么改。或者有什么好方式,可以实现我在2个静态页面中加段代码。我的目标就是2个页面切换的时候 能把session换下,并且传个点击时候的地址,因为到时是要做到冲哪里来,那里去,只不过页面换成了另一个语言版本。大家放心说吧,分布够 另外开贴,必结。

解决方案 »

  1.   

    这个2个链接最终是要放到top.html里面的??????我觉得这个2个链接只要放到首页就可以了,总不至于让用户没进入一张页面就去选择语言吧
      

  2.   

    target="_parent"对gotoLanguage无效
    只对href="#"有作用,要不gotoLanguage里面改成:
    window.open(url,"_parent")试试
      

  3.   

    是在首页,只不过,这个top.html被所有的模版页面以<iframe border="0" frameborder="0" scrolling="No" width="778"  height="80" src="top.html"></iframe>调用。是全局的
      

  4.   

    struts怎么不用自己的国际化

    怎么用 提示下。我现在的中英是代码复用的。只不过根据session或者传入的lid来判断进去的页面是那个版本。
    关键我们的需求比较BT,要求一个user可以进入各个语言版本,并且能随时切换各个版本。所以我通过这个方式将信息放入session,并且写个了baseAction来控制语言版本的相关跳转。
      

  5.   

    <a href="?_LID=1">中文</a>|<a href="?_LID=2" target="_parent">英文</a>
      

  6.   

    <a href="?_LID=1">中文</a>|<a href="?_LID=2" target="_parent">英文</a>
    这样缺少了"&webUrl="+document.location,因为我要做到任意跳转,并且判断是否登陆,登陆后跳回点击前的页面,所以我要传个url过去。我是用"&webUrl="+document.location传的。
      

  7.   

    再加上不就完了
    String _lid =request.getParameter("_LID");String webUrl =request.getHeader("Refer");
      

  8.   

    对不起是
    request.getHeader("Referer")
      

  9.   

    String _lid =request.getParameter("_LID");String webUrl =request.getHeader("Referer");
    -----------------------------------------------
    这些我可以在代码加,但是我不需要在页面里面set?Header难道会自己得到我点击中英文时候的url?
      

  10.   

    我尝试了,前进了一部可,可以支持target="_parent"这个属性了,但是问题又来了request.getHeader("Referer")
    中取得的地址,不是浏览器中的,而且我那个top.html这个的地址。导致点击后,只显示top.html这个页面了。无法回到我那些框架中的.do或.html页面
      

  11.   

    那就这样
    <a href="#" onclick="gotoLanguage(1)" >中文</a>|<a href="#" onclick="gotoLanguage(2)">英文</a>
    <script language="javascript">
    function gotoLanguage(_LID)
    {
      thisForm = document.testForm;
      if(_LID==1){
        window.location.href="/nanbo/language/en_language_index_home.jsp?_LID="+_LID+"&webUrl="+document.location;
      }else{
        parent.window.location.href="/nanbo/language/en_language_index_home.jsp?_LID="+_LID+"&webUrl="+document.location;
      }
    }
    </script>
      

  12.   

    这和我原来的写法有什么区别?这样的后面就不能加target="_parent"了,不能正常跳转了
      

  13.   

    是的 而且这个取的地址 也是top.html的。一样不能正常回去
      

  14.   

    <a href="#" onclick="gotoLanguage(1)" >中文</a>|<a href="#" onclick="gotoLanguage(2)">英文</a>
    <script language="javascript">
    function gotoLanguage(_LID)
    {
      thisForm = document.testForm;
      var tmpurl = "nanbo/language/en_language_index_home.jsp?_LID=" + _LID + "&webUrl=";
      if(_LID==1){
        location.href = tmpurl + location.href;
      }else{
        parent.location.href = tmpurl + parent.location.href;
      }
    }
    </script>
      

  15.   

    dreamover(梦醒了) ,你终于又回来了。就差一点了。
    thisForm = document.testForm;
      var tmpurl = "nanbo/language/en_language_index_home.jsp?_LID=" + _LID + "&webUrl=";
      parent.location.href = tmpurl + parent.location.href;实际因该是这样的,中英文跳转一样的。我前面分开写,只是方便对照。跳转是没有问题了。现在还是取地址的问题,我这里parent.location.href报错。
    我用 alert(parent.location.href);都没有提示,到这里就跳出了 ,是不是写法有误?
      

  16.   

    我这儿alert(parent.location.href);可以正常出来结果你用的不是IE?那你试一下
    parent.window.location
    parent.window.location.href
    parent.window.document.location.href
    parent.window.document.URL
      

  17.   

    我尝试了,alert(parent.location.href);成功了 在网上,本地不行。问题暂时解决了。不过对我的代码来说,才是刚开始。结贴