【问题标题】:The <ui-repeat> component disappears after an AJAX request<ui-repeat> 组件在 AJAX 请求后消失
【发布时间】:2017-05-24 12:06:16
【问题描述】:

我将 JSF 与 PrimeFaces 框架一起使用 我有一个包含&lt;p:fieldset&gt;&lt;ui-repeat&gt;,当我使用AJAX 查询过滤&lt;p:fieldset&gt; 时,&lt;ui-repeat&gt; 从页面中消失。

这是我的代码:

<h:form id="myForm1">
    <p:panelGrid id="pnlg">
        <ui:repeat var="state" value="#{myBean.listState}" varStatus="status">
            <p:fieldset id="fieldsetState">
                <p:dataGrid id="dataGridState" value="#{myBean.state}">
                    <p:panel id="pnl">
                        // some code...
                    </p:panel>
                </p:dataGrid>
            </p:fieldset>
        </ui:repeat>
    </p:panelGrid>
</h:form>

<h:form id="myForm2">
    <p:commandButton value="Filter">
        // When I run this AJAX query, it is supposed to update 'myForm'. Instead, 'pnlg' disappears
        <p:ajax listener="#{ManageState.filterState}" update="myForm1" />
    </p:commandButton>
</h:form>

当我运行这个 AJAX 查询时,它应该更新“myForm”。相反,'pnlg' 消失了。我想是因为&lt;ui:repeat&gt;

这是我的支持 Bean:

@ManagedBean
@ViewScoped
public class ManageState extends AbstractManagedBean implements Serializable {
    public void filterState() {
        // Filter the list...
    }
}

@ManagedBean
@SessionScoped
public class myBean implements Serializable {
    private List<sortedBean> listState;

    // getter, setter...
}

【问题讨论】:

  • 你的backing bean是什么样子的? myBean 不在请求范围内,是吗?
  • 另外,不知道是拼写错误还是类似的意思,但我猜你的 dataGrid 值应该是 #{state} 而不是 #{myBean.state}
  • 您好,是的,抱歉,这是一个错字。我更新了我的帖子。也许你能告诉我问题出在哪里
  • 查询第一次起作用,它过滤了列表。但是第二次 从页面上消失了。这很奇怪。
  • ClientID 与其命名容器相关。您的按钮仅在 myForm2 中查找 myForm1。试试 update=":myForm1"

标签: ajax jsf primefaces


【解决方案1】:

我解决了这个问题,合并了两种形式,它可以工作。但我不知道他为什么会这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多