【发布时间】:2012-12-31 23:14:10
【问题描述】:
我正在使用JSF和html表格创建一个表格组件(不涉及其他面孔表格),因此将集合作为参数并迭代并显示表格内容。
我有一个“删除”链接点击它应该删除项目,它工作正常。我现在的问题是删除项目后我需要自我刷新表格组件。
当我在渲染中使用@form 时,它起作用了。但是当将组件与任何页面集成时,这将是一个问题。任何人都有想法在单击“删除”链接时自行刷新表格组件?请提供您的想法。
<a4j:commandLink id="removeSelection" actionListener="#{cc.attrs.rowRemoveEventListener}" render="@form #{cc.attrs.renderOnRemove}" styleClass="st-remove-link" onclick="">
<f:param name="rowKey" value="#{rowKey}"/>
<span class="link-text">Remove</span>
<a4j:ajax event="click" render="#{cc.clientId}" />
</a4j:commandLink>
完整的组件标记:
<div id="#{cc.clientId}">
<--stylesheet link here-->
<h:panelGroup id="simpletablepanel" layout="block">
<a4j:outputPanel id="simpletablebody" layout="block">
<table>
<tr>
<td>
<span>value</span>
</td>
<td>
<a4j:commandLink id="removeSelection"
actionListener="#{cc.attrs.rowRemoveEventListener}"
render=":#{cc.clientId} #{cc.attrs.renderOnRemove}">
<f:param name="rowKey" value="#{rowKey}"/>
<span>Remove</span>
</a4j:commandLink>
</td>
</tr>
</tbody>
</ui:fragment>
</table>
</a4j:outputPanel>
</div>
【问题讨论】:
-
您是否已经将组件包装在
<div id="#{cc.clientId}">中? (见this) -
是的,试过了。它只是刷新表单而不是组件本身。我删除了
并在 的渲染中传递了 #{cc.clientId}。仍然没有任何效果。 -
能贴出完整的组件代码吗?
-
您在 render 属性中添加了
:的 clientId,这使其成为绝对组件路径,而不是您想要的。请改用render="#{cc.clientId}"。 -
抱歉,我尝试使用硬编码的 Id ,我删除了它并尝试了但仍然是相同的结果