|
|
1
25
ViewState存在的最初原因是因为HTTP是无状态的。跨请求的组件状态需要以某种方式维护。要么将状态存储在服务器的内存中并将其绑定到会话,要么在每次请求/响应中对其进行序列化/反序列化。 对于afaik,viewstate不用于检测双重提交,但如果附加时间戳或类似的东西,则可以检测到双重提交。 还可以加密viewstate以确保客户端不会更改它。
每个组件负责用
|
|
|
2
12
如果您熟悉JavaScript,您可以将JSF组件树想象成有点像HTML DOM,其中HTML页面定义初始状态,但您可以在运行时更改它。 视图技术(通常是JSP或Facelets)定义了初始状态,但之后它可以通过编程进行操作。例如,可以添加 component 或设置 property . 为了使其正常工作,必须在请求之间保持视图状态。 视图状态分为两部分。第一个定义了组件树的结构:
第二部分定义了组件的状态。由于Uidata等组件的存在,它们是分开的,在这些组件中,子级可以拥有(例如)每行状态。这是通过 StateHolder 机制。 |