我正在使用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属性为空。
答案 0 :(得分:0)
尝试在表格上方添加一个组件实例,其属性为rendered="false"
。
这将确保JSF加载了处理标记所需的任何内容。