gpt4 book ai didi

jsf-2 - 刷新数据表后,Primefaces 数据表过滤器值丢失

转载 作者:行者123 更新时间:2023-12-04 00:44:55 25 4
gpt4 key购买 nike

我使用的是 JSF 2.0 和 Primefaces 3.2。我有一个带有数据表的主窗体,每一行都有一个按钮,可以打开一个带有另一个数据表的对话框。对话框有自己的形式。当在对话框中选择数据表行时,我处理选择,然后刷新主窗体中的数据表。刷新后,主数据表上的所有过滤器都丢失了。有没有办法记住过滤器值?

我的 JSF 页面

<h:panelGroup id="mainTable">
<h:form id="mainForm" prependId="false">
<p:dataTable id="cl_grid1" var="item" widgetVar="mainGrid"
value="# {controller.items}">


<p:column headerText="Colum1" filterMatchMode="contains" filterBy="#{item.myObj.code}" sortBy="#{item.myObj.code}">
<h:outputText value="#{item.myObj.code}" style="float:left" />

<p:commandButton id="selectBtn" icon="select"
oncomplete="selectDialog.show()" actionListener="#{controller.setMainItem}">
<f:param name="selectedMainItem" value="#{item.id}"/>
</p:commandButton>



</p:column>

</p:dataTable
</h:form>
</h:panelGroup>

<p:dialog id="cl_selectDialog" header="Select AAAA" dynamic="true" modal="true" widgetVar="selectDialog"
height="500" width="900" showEffect="explode" hideEffect="explode">

<h:form id="selectForm" prependId="true">

<p:dataTable id="cl_selectGrid" var="selectorItem" widgetVar="selectGrid"
value="# {controller.selectorItems}" selection="#{controller.selectedItem}"
rowKey="#{selectorItem.id}" selectionMode="single">



<p:commandButton actionListener="#{controller.processSelection}" value="Ok" icon="ui-icon ui-icon-search"
oncomplete="selectDialog.hide()" update=":mainTable" process="@form"/>
<p:commandButton value="Cancel" icon="ui-icon ui-icon-search" onclick="selectDialog.hide()" type="button"/>
</h:form>
</p:dialog>

我的 Controller

在我的 Controller 中,我所做的只是再次补充我的数据表。
@Component
@Scope("view")
public class Controller extends BaseController implements Serializable {

private List<Item> items;

public Controller() {
items = new ArrayList<Item>();
}


@PostConstruct
public void init() {
loadItems();
}

protected void loadItems() {
items = //Load items from Database
}


public void processSelection(ActionEvent event) {
//Add the selected Item and then reload items
loadItems();
}

}

最佳答案

如果它是 AJAX 请求,您可以在触发器组件上添加一个“oncomplete”方法,该方法具有:

<p: ... update='myDatatableId' oncomplete='myDatatableWidget.filter();' />

通过这种方式,您将重新触发数据表上的当前过滤器,或者您也可以使用
 ... oncomplete='myDatatableWidget.clearFilters();' ...

关于jsf-2 - 刷新数据表后,Primefaces 数据表过滤器值丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com