tapestry4应用之For组件
来源:互联网 发布:nginx 反向代理 iis 编辑:程序博客网 时间:2024/04/30 16:07
说明:这些内容来自于T4的官方文档和自己的理解,如果有不对的地方请批评指正
For组件和Foreach组件一样是循环组件,从T4开始Foreach组件不再 建议使用了。当我们在Form组件中使用For组件的时候,For组件会在Form组件第一次解析的时候,将其source参数所绑定的数据集合以某种规则而转化为一个字符串,放在Form表单的一个hidden的域中,当Form组件发生二次解析的时候,For组件根据隐藏在Form表单hidden域中字符串找回source参数所绑定的数据集合,从而避免Form组件在第一次解析和第二次解析的时候,由于source参数所绑定的数据集合不一致而造成的StaleLink异常。
如果source参数的数据是一个基本数据类型或者数据能被序列化T4将能自动的把对象转化成一个字符串,如果不能被序列化将报一个带有“Could not find a strategy instance for class”的ApplicationRuntimeException。
解决方法如下:
1、只存储数据对象的主键
可以定义一个包含主键的属性给keyExpression参数
2、让存储数据的类可以序列化
T4将自动的转换序列化的数据成字符串然后存储在form中
3、按照自己的方式定义类到字符串的转换方式。需要自己实现SqueezeAdaptor方法,然后在WEB-INF/hivemodule.xml中注册你的squeeze adaptor
4、使用For组件的volatile 参数,这个参数默认值为false,如果为true则表示在For组件第一次解析的时候不需要
将source参数所绑定的数据转化成字符串并隐藏在hidden域中。
官方建议的使用1、2这两种解决办法。
- tapestry4应用之For组件
- Tapestry4加Ext css自定义TabPage组件
- Tapestry4应用指南-安装及实例
- 应用组件之Activity
- Android应用组件之Service
- Android应用组件之ContentProvider
- Tapestry4入门
- RobotFrameWork之For循环应用
- SoftReference的介绍以及在Tapestry4中页面池的应用
- COM 组件设计与应用之数据类型
- android之ImageView+Gallery组件的应用
- 四大应用组件之Service【Android】
- 四大应用组件之BroadcastReceiver【Android】
- 四大应用组件之ContentProvider【Android】
- 疯狂android之android应用基本组件
- Android 四大应用组件之ContentProvider
- Android系列之Service组件的应用
- unity组件之应用与控制
- oracle数据库连接错误
- 关于SESSION的总结
- Forms验证中的roles
- Always There
- 天气很好
- tapestry4应用之For组件
- WinCore--TerminateThread--
- 使用 jQuery 简化 Ajax 开发(转载)
- Windows Socket API 使用小结
- 如何备份并恢复DNN网站
- 匈牙利命名法规则
- ORA-01034 ORA-27101
- LoadLirary函数调用DLL
- Bjarne Stroustrup语录[C++经验]