h:commandButton 部分刷新无效

h:commandButton partial refresh cannot work

我是 JSF 的新手,我在我的 JSF 2.2 中实现部分 refresh/rendering 有困难,我使用的是 .xhtml 页面,我已经通过 Internet 搜索解决方案但没有用.我的做法错了吗?

这是我的代码:

<h:form>
  <div class="container">
    <div class="section">

      <!--   Icon Section   -->
      <h:panelGroup id="result" styleClass="row">
        <ui:repeat var="project" value="#{homeBean.displayProjectList}">

          <div class="col s12 m6 l4">
            <div class="card">
              <div class="card-image">
                <img src="resources/materialize/background1.jpg" />
                <span class="card-title">#{project.title}</span>
              </div>
              <div class="card-content">
                <p>#{project.summary}</p>
              </div>
              <div class="card-action">
                <a href="./event.xhtml">More</a>
              </div>
            </div>
          </div>

        </ui:repeat>
      </h:panelGroup>


      <div class="row center">
        <h:commandButton styleClass="btn-large yellow lighten-2 black-text" value="SHOW MORE" actionListener="#{homeBean.showMore()}" >
          <f:ajax render="result" />
        </h:commandButton>

      </div>

    </div>
  </div>
</h:form>

按下命令按钮时,我希望仅刷新面板组 id="result" 中涵盖的部分,它确实更新了,但我希望仅刷新该部分而不是整个页面。

非常感谢您的时间和精力。

从 h:commanButton 中删除 actionListener 并将侦听器放入 f:ajax 并尝试

我觉得不错,应该可以。您确定整个页面都在刷新吗?

<f:ajax> 应该可以解决问题。

我找到了答案,对于我来说,我通过导入 javax.faces-2.2.7.jar 使用 JSF 2.2,我应该在 head 标签

中设置以下 outputScript 声明
<h:outputScript library="javax.faces" name="jsf.js" target="head" />

现在效果很好。

参考:

Programatically adding Ajax Behaviour - “Mojarra is not defined”