【问题标题】:JSF p:commandLink and p:ajax have different behavior in updateJSF p:commandLink 和 p:ajax 在更新中有不同的行为
【发布时间】:2012-10-18 21:53:51
【问题描述】:

我有一个带有列表项的菜单,里面有一个p:commandLink。在将它用于不同的页面时,我意识到我在更新带有p:dataTablep:columns 的表单时遇到了问题。点击链接后,form2 实际上有一些面板和里面的表格应该更新。现在我的问题是:form2 中只有 大部分 内容被正确更新,但 p:columns 具有 old 值。如果我再次单击该链接,则会显示正确的值。

bean方法public void selectProject(Project myProject)被正确调用,值被正确处理。

现在奇怪的是:如果我添加 h:graphicImagep: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 的预期行为。在原始(仍然失败)设置中,菜单被实现为复合组件。

【问题讨论】:

  • 您的表单是嵌套的吗?不要在 web 开发中嵌套表单,它会导致各种 DOM 问题,就像你遇到的那样

标签: java ajax jsf-2 primefaces


【解决方案1】:

作为一种解决方法,我使用

<h:commandLink>
  <h:outputText value="#{p.name}"/>
  <p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/>
</h:commandLink>

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2013-01-05
    相关资源
    最近更新 更多