0

我有一个关于 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 在渲染响应阶段迭代列表的项目,实际上,在构建视图时“项目”不可用。

是不是说jsf在创建树组件的时候不会为列表中的每一项都复制表格的内容呢?

在上表中,每行有 2 个 inputText。如果 jsf 没有为每一行创建几个 inputText 对象,那么 jsf 在提交表单时如何处理所有 6 个请求参数(特别是在应用请求值阶段)。

非常感谢,

尼科

4

1 回答 1

0

如果我没有错

恢复视图阶段- 在此阶段,如果请求的页面以前显示过,则检索该页面的组件树,如果是第一次显示,则构建一个新的组件树。如果页面之前显示过,所有组件都设置为之前的状态。这意味着 JSF 会自动保留表单信息。例如,当用户发布在解码过程中被拒绝的非法数据时,输入会重新显示,以便用户可以更正它们。

应用请求值阶段——在这个阶段,JSF 实现迭代组件树中的组件对象。每个组件对象检查哪些请求值属于它并存储它们。

在流程验证阶段,提交的字符串值首先被转换为“本地值”,可以是任何类型的对象。当您设计 JSF 页面时,您可以附加对本地值执行正确性检查的验证器。如果验证通过,则 JSF 生命周期正常进行。但是,当发生转换或验证错误时,JSF 实现会直接调用 Render Response 阶段,重新显示当前页面,以便用户有另一个机会提供正确的输入。

更新模型值阶段- 在此阶段,本地值用于更新连接到组件的 bean。

Invoke Application阶段执行导致表单提交的按钮或链接组件的action方法

渲染响应阶段- 对响应进行编码并将其发送到浏览器。

于 2013-12-05T10:17:47.627 回答