一:乱码问题,修改其他配置前注意一定要在 .application文件中加上
<meta key="org.apache.tapestry.messages-encoding" value="UTF-8" />
<meta key="org.apache.tapestry.output-encoding" value="UTF-8" />
<meta key="org.apache.tapestry.template-encoding" value="UTF8" />
二:Button 响应 DirectLink ,ExternalLink..URL
1.DirectLink:
app?component=dlink&page=Home&service=direct&session=T&sp=Sdirectlink
session=T:表明是否stateful,告知service在响应请求的时候是否需要检验用户session.
2.ExternalLink:
app?page=Home&service=external&sp=Sexternallink
三:Exception:.....:Could not find a strategy instance for class...
纠结一上午的问题,最终发现勒问题所在,结果很意外。
之前的代码:
<table width="400" border="1">
<form jwcid="@Form">
<tr jwcid="@For" source="ognl:studentlist" value="ognl:student" element="tr" >
<td align="center">
<span jwcid="stuName@TextField" value="ognl:student.stuName" size="20">学生姓名</span>
</td>
<td align="center">
<span jwcid="stuAge@TextField" value="ognl:student.stuAge" size="20">学生年龄</span>
</td>
<td align="center">
<span jwcid="stuSex@TextField" value="ognl:student.stuSex" size="20">学生性别</span>
</td>
</tr>
</form>
<span jwcid="@Insert" value="ognl:studentlist.size"></span>
</table>
For组件遍历集合,为TextField组件赋值.因为TextField必须与Form组件同时存在,所以最外层 加有jwcid="@Form".这样做的结果就是 以上的Exception..
最终我发现是 Student 类没有实现Serializable接口 序列化,实现接口后页面正常显示。我正纳闷,记得以前不实现序列话程序也能正常启动!
于是将以上TextField组件 换 为 Insert组件.依然是相同的Exception.但是当在把form组建也删除时 页面这时正常显示。
让人的感觉是这样的,form表单内为组件赋值,载体对象的实体类一定得序列化。否则可以省去。也许这并不算是结论吧,虽然不懂底层是个什么实现原理,起码在遇见此类情况知道如何解决勒。