SimonLei 发表于 2013-2-6 11:10:07

SmartGWT 里ds.xml中文title的正确显示办法

SmartGwt 里面采用 .ds.xml 文件来定义客户端与服务器之间交互的数据源。
用英文都没有问题,一旦碰到中文的title,用正常的
<script src="sc/DataSourceLoader?dataSource=xxx"></script>
这种方式,就会在页面上显示为若干个??
 
搜索smartclient的论坛,发现有些解决方案,将我的解决方案记录一下:
 
1. 把html改成jsp,引入
<%@ taglib uri="/WEB-INF/iscTaglib.xml" prefix="isomorphic" %>
 
2. 在 ds.xml文件中引入fmt.tld
<%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %><DataSource xmlns:fmt="urn:jsptld:/WEB-INF/fmt.tld"    ID="xxx" 3. 在title的地方使用
<field name="name">    <title><fmt:message key="xxx.titleName"/></title></field> 
 4. 在jsp文件当中使用
<SCRIPT> <isomorphic:XML> <jsp:include page="/ds/xxx.ds.xml"></jsp:include> </isomorphic:XML> </SCRIPT> 这种形式来引入 datasource,然后中文就正确显示了。
 
不过,后来发现事情更简单了,第二步和第三步都可以不要,直接1、4步就可以解决问题。
也就是说,ds.xml文件不用特殊处理,就可以搞定了。
注意,我这里所有的ds.xml文件都是utf-8编码格式的,别的格式我没试过。
 
刚才找到了更好的办法:
感觉上面的方式不够优雅,而且还引入了jsp,非常没有必要。直接访问
/sc/DataSourceLoader?dataSource=xxx
就是乱码,感觉是个小问题,看了一下 DataSourceLoader这个servlet,
比较简单。继承了一下,然后改了一下encoding,就搞定了。
    @Override    public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      response.setContentType( "text/json; charset=UTF-8");      super.processRequest(request, response);    } 
这种方法,只需要继承一个类,然后改一下web.xml的定义就ok了,不需要引入jsp,
也不需要fmt,感觉更好。
页: [1]
查看完整版本: SmartGWT 里ds.xml中文title的正确显示办法