我对JSF 1.2如何正确管理DataTable有疑问。考虑一下这个表(假设tableList.persone有3个项目):
<h:dataTable id="tablePersone" value="#{tableList.persone}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="STATO" />
</f:facet>
<h:inputText value="#{item.stato}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CODICE" />
</f:facet>
<h:inputText value="#{item.codice}" />
</h:column>
</h:dataTable>
我读到jsf在渲染响应阶段迭代列表中的项目,实际上,在构建视图时“item”不可用。
这是否意味着在创建树组件时,jsf不会为列表中的每个项复制表的内容?
在上表中,每行有2个inputText。如果jsf没有为每一行创建几个inputText对象,那么jsf在提交表单时如何处理所有6个请求参数(特别是在应用请求值阶段)。
非常感谢,
尼科
答案 0 :(得分:0)
如果我没错?
还原视图阶段 - 在此阶段检索所请求页面的组件树(如果之前已显示)或构建新组件树(如果已显示) 首次。如果先前显示了该页面,则会设置所有组件 到他们先前的状态。这意味着JSF会自动保留表单信息。 例如,当用户发布在解码期间被拒绝的非法数据时, 输入被重新显示,以便用户可以纠正它们。
应用请求值阶段 - 在此阶段,JSF 实现迭代组件树中的组件对象。每 组件对象检查哪些请求值属于它并存储它们。
流程验证 阶段,首先转换提交的字符串值 “本地值”,可以是任何类型的对象。当你设计一个JSF 页面,您可以附加在本地执行正确性检查的验证器 值。如果验证通过,则JSF生命周期正常进行。然而, 当转换或验证错误发生时,JSF实现调用 直接渲染响应阶段,重新显示当前页面以便 用户有另一次机会提供正确的输入。
更新模型值阶段 - 在此阶段中 本地值用于更新连接到组件的bean。
调用应用阶段 按钮或链接组件的操作方法 导致表单提交被执行
呈现响应阶段 - 对响应进行编码并将其发送给 浏览器。