Tapestry失效链接问题(stale link)

关于失效链接(stale link):
    当form的动态部分用来表现持久化属性的时候, web浏览器和服务器有可能不同步,就造成了一个固有的问题。当form被submitted的时候,Tapestry会发觉引入的form与储存在服务器中的状态不匹配,这就是失效连接。

    对于失效连接,是Tapestry特有的没有办法避免的问题。所以我们在处理这种情况的时候要非常小心。至于为什么产生失效连接,这与Form组件运行机制有关,通常发生在Form组件使用Foreach组件循环的时候。Tapestry为Form及包含在其中的所有组件自动分配一个唯一的元素ID。当submitted的时候,Tapestry将form里面动态的数据输入到服务器中的持久化属性。然后,点击浏览器上的后退按钮,浏览器回到被submitted之前的状态,如果这个时候,再次发生submitted,Tapestry会发现,form里面的动态数据和服务器中的持久化属性不匹配,因为服务器中的持久化属性已经被改动。请注意“持久化”这三个字。

    在以前的servlet应用程序里面不会发生这种情况,因为在后退之后再submitted,HttpSession保存的状态是后退之前放在缓存中的状态,所以不会造成失效连接。而Tapestry是动态加载组件,并且为每个组件指定唯一的不可重复的ID。

    为了解决失效连接问题,Tapestry提供了另外一个组件listEdit来取代Form+Foreach组合来完成循环遍利功能。

(摘自<<Tapestry 开发指南>>)

你可能感兴趣的:(应用服务器,Web,浏览器,servlet,tapestry)