我有一个包含列表项的菜单,里面有一个p:commandLink
。在不同页面使用此功能时,我意识到我在使用p:dataTable
和p:columns
更新表单时遇到问题。点击链接后,form2
实际上有一些面板和里面的表应该更新。现在我的问题是:form2
中只有大多数内容已正确更新,但p:columns
具有旧值。如果我再次点击链接,则会显示正确的值。
正确调用bean方法public void selectProject(Project myProject)
并正确处理值。
现在奇怪的是:如果我用h:graphicImage
添加p:ajax
,一切正常!!
<h:form id="form1">
...
<li>
<p:commandLink update=":form2" actionListener="#{bean.selectProject(p)}">
<h:outputText value="#{p.name}" />
</p:commandLink>
<!-- Code below is for testing only, but works fine! -->
<h:graphicImage value="#{iconBean.icon(12,'clock')}">
<p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/>
</h:graphicImage>
</li>
...
</h:form>
更新这似乎与p:columns
无关,简化的测试用例会显示p:commandLink
的预期行为。在原始(仍然失败)设置中,菜单实现为复合组件。
答案 0 :(得分:2)
作为一种解决方法,我使用
<h:commandLink>
<h:outputText value="#{p.name}"/>
<p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/>
</h:commandLink>