【发布时间】:2017-05-24 12:06:16
【问题描述】:
我将 JSF 与 PrimeFaces 框架一起使用
我有一个包含<p:fieldset> 的<ui-repeat>,当我使用AJAX 查询过滤<p:fieldset> 时,<ui-repeat> 从页面中消失。
这是我的代码:
<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' 消失了。我想是因为<ui:repeat>。
这是我的支持 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