我正在使用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)。但是,我想在语言切换之前返回用户所在的页面。
提前致谢。
答案 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>
•
<s:a id="ru" cssClass="lang">Русский</s:a>
•
<s:a id="en" cssClass="lang">English</s:a>
</span>