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,感觉更好。

你可能感兴趣的:(jsp,Web,json,xml,servlet)