[Tapestry5] 刚开始学习tapestry,遇到一个纠结的问题(tml页面中文问题)

一条路一个人 2012-05-11

最近两天看了看tapestry,按照教程写些例子体验了一下,遇到了一个可恶的问题:Failure parsing template classpath:criss/test/pages/Welcome.tml: Invalid byte 3 of 3-byte UTF-8 sequence.
welcome.tml:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
您好就:
</html>
然后访问报错:

 

去掉一个汉字后,正常显示。试过几次后发现:奇数个汉字或中文字符都会出错,偶数个没问题。自己想来可能是编码的问题,我的工程是utf-8编码的。有谁也遇到过相同的问题吗?是哪里配置出现问题吗?唉,本想用用tapestry框架的,希望哪位高手指点一下

seris 2012-05-27
https://issues.apache.org/jira/browse/TAP5-1741
我试过加参数运行但是没效果,所以照着改了源码,如果你觉着改源码麻烦,也可以换到5.2.6,还是比较稳定的。
下次记得说版本。
muinjava 2012-06-01
其实你需要再查查你的.tml文件是否真是UTF-8编码的。 你可以用notepad或其它软件打开tml, 然后save 成UTF-8。相对应的java文件也用UTF-8编码,试试。我用的是tapestry 5.3.2.
yhjzcl 2012-06-05
不仅仅是单双数问题,对特写汉字也不行,比如,男性这两个字就不行,男人,男女就可以。
ychen007 2012-06-05
1)在tml文件头加上
<?xml version="1.0" encoding="UTF-8"?>

2)使用5.2.6版本

我测试可以解决问题。
yhjzcl 2012-06-06
Tapestry 5.2.6 是可以的, tapestry 5.3.3 不行
一条路一个人 2012-06-08
恩,真是感谢大家了,我是在5.3.3版本下测试的,可能是版本的原因吧
superaxis 2012-06-08
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">


修改头信息,见:

http://tapestry.apache.org/component-templates.html
yhjzcl 2012-06-12
这是错误信息
Failure parsing template classpath:org/bjlj/tapestry/pages/Index.tml: Invalid byte 2 of 3-byte UTF-8 sequence.

修改头信息,不起作用。
yhjzcl 2012-07-17
盼望着 Tapestry 5.3.4 能够修改中文问题,可又失望了。自己动手改……。

1、下载源文件,打开 tapestry-core 包中的 org.apache.tapestry5.internal.services  解压出 XMLTokenStream.java

2、用这行代码替换 337行
InputStreamReader rawReader = new InputStreamReader(rawStream, "UTF-8");

3、用这行代码替换 341行
PrintWriter writer = new PrintWriter(new OutputStreamWriter(bos, "UTF-8"));

4
、在开发包源码下建一个包:
org.apache.tapestry5.internal.services
把修改后的 XMLTokenStream.java 放入其中。

5、ok,中文问题到此解决。
Global site tag (gtag.js) - Google Analytics