我有一个包含列表项的菜单,里面有一个 p:commandLink
。在将它用于不同的页面时,我意识到我在使用 p:dataTable
和 p:columns
更新表单时遇到问题。单击链接后,form2
实际上有一些面板和里面的表格应该被更新。现在我的问题是:form2
中只有 大部分 内容被正确更新,但是 p:columns
有旧 值(value)。如果我再次单击该链接,则会显示正确的值。
bean 方法 public void selectProject(Project myProject)
被正确调用并且值被正确处理。
现在奇怪的是:如果我添加一个带有 p:ajax
的 h:graphicImage
一切正常!!
<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
的预期行为。在原始(仍然失败)设置中,菜单是作为复合组件实现的。
最佳答案
作为我使用的解决方法
<h:commandLink>
<h:outputText value="#{p.name}"/>
<p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/>
</h:commandLink>
关于java - JSF p :commandLink and p:ajax have different behavior in update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124083/