RichFaces <a4j:support>在第一次尝试时不会重新渲染

时间:2016-08-11 07:44:54

标签: ajax jsf richfaces jsf-1.2

我正在使用JSF 1.2和RichFaces 3.3.3(大公司项目 - 还没有更新的选项)我在使用<a4j:support>标记重新渲染某些字段时遇到问题。 我有一个表和一个摘要行,它显示在辅助bean中计算的值。摘要行单元格应该在其他行的每次更改后自动更新,因此在触发更新的每个单元格上,我都有valueChangeListener调用&#34;重新计算&#34;关于bean和<a4j:support reRender="[corresponding_summary_cell]" (...) />的方法问题是当我第一次用表格加载页面时,重新渲染不起作用。调用Ajax请求,但返回某种&#34;空&#34;响应。只有当我重新加载视图时(通过单击指向页面的链接),请求才会按预期开始工作,正确更新相应的摘要单元格。

那种空的响应内容片段:

<body>
  <meta name="Ajax-Update-Ids" content="" /><span id="ajax-view-state">    
  <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id11" autocomplete="off" /></span>
  <meta id="Ajax-Response" name="Ajax-Response" content="true" />
  <meta name="Ajax-Update-Ids" content="" />
  <span id="ajax-view-state">
    <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id11" autocomplete="off" />
  </span>
  <meta id="Ajax-Response" name="Ajax-Response" content="true" />
</body>

触发计算示例的单元格:

<customNamespace:moneyValue value="#{someAttribute}" id="field1" valueChangeListener="#{controller.calculateSums}">
   <a4j:support event="onchange" reRender="Form-Table-Cost1Sum"/>
</customNamespace:moneyValue>

表中的行是动态添加的,但它只是第一次(将第一行添加到空表中),这会产生问题,下一行工作正常。我也尝试重新渲染整个表单 - 没有任何改变。

TL; DR: 有一个表格单元格应该ajax更新另一行,只有在重新加载后才能工作,第一次给出响应,如reRender属性为空。

1 个答案:

答案 0 :(得分:0)

尝试在表格上方添加一个组件实例,其属性为rendered="false"。 这将确保JSF加载了处理标记所需的任何内容。