问题是:如何使用此值?是否用于验证在提交时发送的值,以确保同一请求不会发送两次?
viewstate存在的最初原因是因为HTTP是无状态的。跨请求的组件状态需要以一种或另一种方式维护。您可以将状态存储在服务器上的内存中并将其绑定到会话,或者每次都在请求/响应中序列化/反序列化它。
AFAIK,viewstate并不用于检测重复提交,但是如果您附加了时间戳或类似的时间戳,则可以。
viewstate也可以被加密以确保客户端不会改变它。
另外,它是如何计算的-我意识到Richfaces的计算方式可能与myfaces不同,但是有一个不错的主意。
每个组件都有责任通过
saveState和保持其状态
restoreState(请参阅本教程)。因此,不同的组件套件会导致不同的视图状态。同样,不同的JSF实现可能会导致不同的视图状态。



