datagrid国际化

    第一次写博客,就是想把自己遇到的问题记录下来给自己提个醒。

 首先datagrid控件的中英文切换只需要引入

<script  src="<c:url value="/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-en.js"/>"></script>
<script  src="<c:url value="/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-zh_CN.js"/>"></script>

即可。我现在需要的是点击我们网页上的语言切换按钮就要切换datagrid的中英文。并且是整个网站所有的页面的datagrid的中英文这个我试了几次才成功

一开始我想直接在那个按钮上加个点击事件然后引入这两个js就是啦然后将这个script的代码放在所有页面共用的head.jsp中就可以实现
代码是
//        if(langugae == null || langugae=='zh_CN'){
// var src = '/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-zh_CN.js';
// $.getScript(src);
// }else if(langugae=='en'){
// var src = '/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-en.js';
// $.getScript(src);
// }
langugae 是点击事件传过来的区别中英文的
后来发现不行这个方法切换不了可能是没有重新加载这个页面的话引入的js没起作用而且我还要保持没次进入这个页面的时候datagrid显示的中英文都是跟页面上是一致的
一加载页面是中文datagrid必须就是中文。一加载页面是英文datagrid就必须是英文如果我在一开始没有引入这个js那么datagrid默认显示的就是英文所以不行

第二次我就想设置个变量在后台代码里面改变变量然后就能动态的加载js代码如下
<script  src="<c:url value="/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-${qiehuan}.js"/>"></script>
这样然后切换语言的时候讲langgugage传zh_cn和en_us在后台
/**
* 语言切换
*/
@RequestMapping("/language_change.do")
public ModelAndView language(HttpServletRequest request, HttpServletResponse response, String language){
language=language.toLowerCase();
  String qiehuan="";
if(language==null||language.equals("")){
return new ModelAndView("redirect:/index.do");
}else{
if(language.equals("zh_cn")){
qiehuan="zh_CN";
resolver.setLocale(request, response, Locale.CHINA );
}else if(language.equals("en_us")){
qiehuan="en";
resolver.setLocale(request, response, Locale.ENGLISH );
}else{
resolver.setLocale(request, response, Locale.CHINA );
}
}
return new ModelAndView("redirect:/index.do?qiehuan="+qiehuan);
}
然后发现可以改了但是一开始还是默认为英文而且只能修改index页面


第三次我设置页面一加载我就调用方法获取当前页面是中文还是英文我的变量是不是为空如果是的话就进入后台在session中存一个跟页面语种一样的变量
代码如下
/**
* 语言切换
*/
@RequestMapping("/language_change.do")
public ModelAndView language(HttpServletRequest request, HttpServletResponse response, String language){
language=language.toLowerCase();
String qiehuan="";
HttpSession session=request.getSession();
if(language==null||language.equals("")){
qiehuan="en";
session.setAttribute("qiehuan",qiehuan);
return new ModelAndView("redirect:/index.do");
}else{
session.removeAttribute("qiehuan");
if(language.equals("zh_cn")){
qiehuan="zh_CN";
resolver.setLocale(request, response, Locale.CHINA );
}else if(language.equals("en_us")){
qiehuan="en";
resolver.setLocale(request, response, Locale.ENGLISH );
}else{
resolver.setLocale(request, response, Locale.CHINA );
}
session.setAttribute("qiehuan",qiehuan);
}
return new ModelAndView("redirect:/index.do");
}
/**
* 进页面语言选择
*/
@RequestMapping("/language_strat.do")
public ModelAndView languageChange(HttpServletRequest request, HttpServletResponse response, String qiehuan){
HttpSession session=request.getSession();
session.setAttribute("qiehuan",qiehuan);
return new ModelAndView("redirect:/index.do");
}
header.jsp中的代码

<script  src="<c:url value="/resources/js/plugin/jquery-easyui-1.4.2/locale/easyui-lang-${sessionScope.qiehuan}.js"/>"></script>
<li><a id="choice" href="<c:url value="/block_blockspage.do"/>" class="lang"><spring:message
code="block"/></a></li>//这个是我在我的header.jsp中随意选取的一个头部的标签每个页面都会使用用来区别一加载页面是中文还是英文
<input type="hidden" id="lan" value="${sessionScope.qiehuan}">

$(document).ready(function () {
window.onload=chooseLanguage;//网页一加载就执行
});
function chooseLanguage() {
var chart=$("#choice").text();
var lan=$("#lan").val();
if(chart=='区块'&&lan==''|| lan==null||lan=='undefined'){
qiehuanlanguage('zh_CN');
}else if (chart=='block'&&lan==''|| lan==null||lan=='undefined'){
qiehuanlanguage('en');
}else{
return;
}
}
function qiehuanlanguage(qiehuan) {
window.location.href = '<c:url value="/language_strat.do?_csrf=${_csrf.token}"/>&t=' + new Date().getTime() + "&qiehuan=" + qiehuan;
}


然后我的页面就能够修改啦至于代码仅供参考嘿嘿。。。。。。。。。。我也不知道你会不会有问题到其他地方嘿嘿还有变量的不规范请忽略嘿嘿可以自己换一个


posted @ 2017-08-24 11:16  一瞬浅笑依然  阅读(503)  评论(0)    收藏  举报