struts2: после переключения локали, как вернуться на ту же страницу, где был пользователь? - PullRequest
2 голосов
/ 22 апреля 2010

Я использую 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 ]

2 голосов
/ 21 сентября 2010

У меня была такая же проблема. Я решил это, передав имя страницы действию (через 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" в классе действий.

Это не лучший способ сделать это, но для моего приложения это было нормально.

1 голос
/ 05 августа 2011

Также я сделал это, с AJAX-запросом к LocaleAction, в случае успеха, просто обновите страницу с помощью 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...