Ajax不更新过滤后的数据表
我正在讨论这个问题,ajax不是从过滤数据表更新的。Primefaces版本是5.2JSF2.2 我正在使用selectEvent,它在对话框中显示行的详细信息。这个很好用。但是当我过滤数据表,然后尝试进行选择时,它不起作用。我尝试了下面的链接,但没有成功。 代码是Ajax不更新过滤后的数据表,ajax,jsf-2,primefaces,datatable,Ajax,Jsf 2,Primefaces,Datatable,我正在讨论这个问题,ajax不是从过滤数据表更新的。Primefaces版本是5.2JSF2.2 我正在使用selectEvent,它在对话框中显示行的详细信息。这个很好用。但是当我过滤数据表,然后尝试进行选择时,它不起作用。我尝试了下面的链接,但没有成功。 代码是 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:o="http://omnifaces.org/ui">
<ui:composition template="/template.xhtml">
<ui:define name="title">
<h:outputText value="#{bundle.ListUtensilsTitle}"></h:outputText>
</ui:define>
<ui:define name="body">
<h:form id="BookView1Form" >
<p:messages id="messages" showSummary="true" globalOnly="false"
showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable value="#{bookingController.itemsBook}" var="book"
id="bookDetDT" widgetVar="bookDetTable"
tableStyle="width:auto"
style="word-wrap: break-word; padding-left: 15px;"
rows="10"
paginator="true"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,20,30,40,50"
rowKey="#{book.bookingId}"
selectionMode="single" selection="#{bookingController.selectedBook}"
>
<p:ajax event="rowSelect" listener="#{bookingController.onRowSelected}"
update=":ViewDetForm bookDetDT" oncomplete="PF('bookDetTable').filter();"/>
<p:ajax event="rowUnselect" />
<p:column filterBy="#{book.bookingId}" filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_bookingId}"/>
</f:facet>
<h:outputText value="#{book.bookingId}"/>
</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_guestId}"/>
</f:facet>
<h:outputText value="#{book.guestId}"/>
</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_bookingDate}"/>
</f:facet>
<h:outputText value="#{book.bookingDate}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_timeSlotId}"/>
</f:facet>
<h:outputText value="#{book.timeSlotId.toString()}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_totalCharges}"/>
</f:facet>
<h:outputText value="#{book.totalCharges}"/>
</p:column>
<p:column >
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_bookingStatus}"/>
</f:facet>
<h:outputText value="#{book.bookingStatus}"/>
</p:column>
<p:column width="100">
<f:facet name="header">
<h:outputText value="#{bundle.ListBookingDetailsTitle_paymentId}"/>
</f:facet>
<h:outputText
value="#{book.paymentId.paymentMode} #{book.paymentId.paymentDate} #{book.paymentId.paymentDetails}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Details"/>
</f:facet>
<p:dataTable value="#{book.itemsHalls}" var="halls" tableStyle="width:auto" >
<p:column >
<h:outputText value="#{halls.hallName}"/>
</p:column>
<p:column >
<h:outputText value="#{halls.venueId.venueName}"/>
</p:column>
</p:dataTable>
</p:column>
</p:dataTable>
</h:form>
<ui:include src="ViewBookingDetails.xhtml"/>
</ui:define>
</ui:composition>
</html>
支持bean是
@ManagedBean(name = "bookingController")
@SessionScoped
public class BookingController implements Serializable {
public List<BookingBean> getItemsBook() {
itemsBook = new ArrayList<BookingBean>();
itemsBookDet=ejbFacadeBookDet.findAll();
for(BookingDetails bookTemp : itemsBookDet) {
BookingBean selectedBookTemp = new BookingBean();
selectedBookTemp.setBookingId(bookTemp.getBookingId());
selectedBookTemp.setBookingDate(bookTemp.getBookingDate());
selectedBookTemp.setTotalCharges(bookTemp.getTotalCharges());
selectedBookTemp.setBookingStatus(bookTemp.getBookingStatus());
selectedBookTemp.setBookingDesc(bookTemp.getBookingDesc());
selectedBookTemp.setGuestId(bookTemp.getGuestId());
selectedBookTemp.setPaymentId(bookTemp.getPaymentId());
selectedBookTemp.setTimeSlotId(bookTemp.getTimeSlotId());
itemsBook.add(selectedBookTemp);
}
for(BookingBean bk : itemsBook) {
bk.setItemsHalls(ejbFacadeHB.findHallsListBookedForBookingID(bk.getBookingId()));
}
for(BookingBean bk : itemsBook) {
if(bk.getBookingStatus().equals("CHECKOUT")) {
bk.setItemsRefund(ejbFacadeBRF.findBookingRefundByBookID(bk.getBookingId()));
//bk.getItemsRefund().setRefundUtensilsList(ejbFacadeBRF.findUtensilsList(bk.getItemsRefund().getRefundId()));
}
}
//selectedBookDet = new BookingDetails();
return itemsBook;
}
public String prepareView1() {
selectedBookDet = null;
selectedBook = new BookingBean();
return "/booking/View1?faces-redirect=true";
}
public void onRowSelected(SelectEvent event) {
selectedBook = (BookingBean)event.getObject();
System.out.println(selectedBook.getBookingId());
fakelist=new ArrayList<Integer>();
fakelist.add(1);
System.out.println("selectedBook = "+selectedBook.getBookingId());
if(((BookingBean)event.getObject()).getBookingStatus().equals("CONFIRMED")) {
selectedBookDet = ejbFacadeBookDet.find(((BookingBean)event.getObject()).getBookingId());
}
/*
FacesContext facesContext = FacesContext.getCurrentInstance();
DataTable table;
table = (DataTable)JsfUtil.findComponent(facesContext.getViewRoot(), "bookDetDT");
table.resetValue();
System.out.println(table.getClientId()+"sdgssfhdfh");
table.reset();
*/
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('viewBKDDialog').show();");
}
public void cancelBook(){
switch(selectedBookDet.getBookingStatus()) {
case "CONFIRMED" :
selectedBookDet.setBookingStatus("CANCELLED");
ejbFacadeBookDet.edit(selectedBookDet);
itemsHB = ejbFacadeHB.findHallsBookedForBookingID(selectedBookDet.getBookingId());
for(HallsBooked hallsBookedTemp : itemsHB) {
hallsBookedTemp.setHallsBookedDesc("CANCELLED");
ejbFacadeHB.edit(hallsBookedTemp);
}
JsfUtil.addSuccessMessage("Booking ID "+selectedBookDet.getBookingId()+" has been cancelled");
itemsBook = null;
selectedBookDet = null;
break;
}
}
private List<Integer> fakelist=null;
public List<Integer> getFakelist() {
return fakelist;
}
}
@ManagedBean(name=“bookingController”)
@会议范围
公共类BookingController实现可序列化{
公共列表getItemsBook(){
itemsBook=新的ArrayList();
itemsBookDet=ejbFacadeBookDet.findAll();
对于(BookingDetails bookTemp:ItemsBookSet){
BookingBean selectedBookTemp=新建BookingBean();
选择bookTemp.setBookingId(bookTemp.getBookingId());
选择bookTemp.setBookingDate(bookTemp.getBookingDate());
选择bookTemp.setTotalCharges(bookTemp.getTotalCharges());
已选择bookTemp.setBookingStatus(bookTemp.getBookingStatus());
选择bookTemp.setBookingDesc(bookTemp.getBookingDesc());
选择bookTemp.setGuestId(bookTemp.getGuestId());
选择bookTemp.setPaymentId(bookTemp.getPaymentId());
selectedBookTemp.setTimeSlotId(bookTemp.getTimeSlotId());
itemsBook.add(selectedBookTemp);
}
用于(BookingBean bk:itemsBook){
bk.setItemsHalls(ejbFacadeHB.findhalls为bookingId(bk.getBookingId())而被booked);
}
用于(BookingBean bk:itemsBook){
如果(bk.getBookingStatus().equals(“签出”)){
bk.setItemsRefund(ejbFacadeBRF.findbookingReturnByBookId(bk.getBookingId());
//bk.getItemsRefund().setReturneUninstList(ejbfacaderf.findUtensilsList(bk.getItemsRefund().getReturnId());
}
}
//selectedBookDet=新建BookingDetails();
归还物品手册;
}
公共字符串prepareView1(){
selectedBookDet=null;
selectedBook=newbookingbean();
返回“/booking/View1?faces redirect=true”;
}
选定行上的公共无效(选择事件){
selectedBook=(BookingBean)事件。getObject();
System.out.println(selectedBook.getBookingId());
fakelist=newarraylist();
增加(1);
System.out.println(“selectedBook=“+selectedBook.getBookingId());
如果(((BookingBean)event.getObject()).getBookingStatus()等于(“已确认”)){
selectedBookDet=ejbFacadeBookDet.find(((BookingBean)event.getObject()).getBookingId());
}
/*
FacesContext FacesContext=FacesContext.getCurrentInstance();
数据表;
table=(DataTable)JsfUtil.findComponent(facesContext.getViewRoot(),“bookdett”);
table.resetValue();
System.out.println(table.getClientId()+“sdgssfhdfh”);
table.reset();
*/
RequestContext=RequestContext.getCurrentInstance();
execute(“PF('viewbkdilog').show();”;
}
公共书籍(){
开关(selectedBookDet.getBookingStatus()){
“确诊”病例:
已选择BookDet.setBookingStatus(“已取消”);
ejbFacadeBookDet.edit(selectedBookDet);
itemsHB=ejbfacadeb.findHallsBookedForBookingID(selectedBookDet.getBookingId());
用于(HallsBooked Hallsbookedttemp:itemsHB){
Hallsbookedttemp.setHallsBookedDesc(“取消”);
ejbfacadeb.edit(hallsBookedTemp);
}
JsfUtil.addSuccessMessage(“预订ID”+selectedBookDet.getBookingId()+“已被取消”);
itemsBook=null;
selectedBookDet=null;
打破
}
}
私有列表fakelist=null;
公共列表getFakelist(){
回归fakelist;
}
}
任何人..请帮助我..为什么要使用filter()方法?选择“否”时,您正在发送以筛选表。我想我可能把你弄糊涂了。这个数据表有两个特性。一种是行选择,它使用ajax打开一个对话框,显示行a的详细信息