struts2:在语言环境切换之后如何在用户所在的同一页面上返回?

时间:2010-04-22 13:23:18

标签: struts2

我正在使用struts2,在我的struts.xml中,我编写了以下用于语言环境切换的代码 -

<action name="switchToEnglish">
         <interceptor-ref name="i18n"/>
         <interceptor-ref name="basicStack"/>
         <result name="input">error.jsp</result>
         <result name="success">login.jsp</result>
</action>

<action name="switchToFrench">
         <interceptor-ref name="i18n"/>
         <interceptor-ref name="basicStack"/>
         <result name="input">error.jsp</result>
         <result name="success">login.jsp</result>
</action>

现在,语言切换后出现同一页面(login.jsp)。但是,我想在语言切换之前返回用户所在的页面。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我通过将页面名称传递给操作(通过GET或POST)来解决它,然后我在结果中使用它:

<action name="switchToEnglish">
     <interceptor-ref name="i18n"/>
     <interceptor-ref name="basicStack"/>
     <result name="input">error.jsp</result>
     <result name="success">%{currentPage}</result>
</action>

<action name="switchToFrench">
     <interceptor-ref name="i18n"/>
     <interceptor-ref name="basicStack"/>
     <result name="input">error.jsp</result>
     <result name="success">%{currentPage}</result>
</action>

不要忘记在动作类中为“currentPage”设置getter / setter。

这不是最好的方法,但我的应用程序还可以。

答案 1 :(得分:1)

此外,我已经通过对LocaleAction的AJAX请求成功,只需使用jQuery刷新页面,您将保持在语言环境更改之前的同一页面。

脚本:

<script type="text/javascript">
$(document).ready(function(){

    $(".lang").click(function() {
        var id = $(this).attr("id");
        $.ajax({
            type: "POST",
            url: "locale.action?lang="+id,
            cache: false,
            success: function(){
                window.location.href='';
            }
        });
        return false;
    });
});
</script>

链接:

       <span style="float: right;">
            <s:a id="ro" cssClass="lang">Română</s:a>
            &bull;
            <s:a id="ru" cssClass="lang">Русский</s:a>
            &bull;
            <s:a id="en" cssClass="lang">English</s:a>
        </span>