[英]p:commandButton doesn't work on second page using lazyload in dataTable
[英]p:commandButton in the second datatable doesn't work
我在同一頁面中有兩個數據表。 頁面加載時,第一個加載。 單擊一行時將加載第二個。 每行都有一個命令按鈕。 在第一個數據表中工作正常。 但是,在第二個參數中,參數值為null。 僅當我使用即時屬性等於true時,它才有效。 有人知道為什么嗎?
我的頁面:
<h:form id="form">
<p:dataTable id="dtOwner" selectionMode="single" var="owner" value="#{ownerBean.retornaOwners}"
selection="#{ownerBean.ownerSelected}" rowKey="#{owner.id_owner}">
<p:ajax update="form:pgCars" process="@form" event="rowSelect" listener="#{ownerBean.onRowSelect}" />
<p:column headerText="Actions">
<p:commandButton value="Exclude" actionListener="#{ownerBean.excludeOwner(owner)}"></p:commandButton>
</p:column>
<p:column headerText="Name">
<h:outputText value="#{owner.name}"></h:outputText>
</p:column>
<p:column headerText="Surname">
<h:outputText value="#{owner.surname}"></h:outputText>
</p:column>
</p:dataTable>
<p:panelGrid id="pgCars">
<p:dataTable id="dtCars" var="car" value="#{ownerBean.ownerSelected.listCars}"
selection="#{ownerBean.ownerSelected}" rowKey="#{owner.id_owner}">
<p:column headerText="Actions" >
<p:commandButton value="Exclude" process="@all" update="form" actionListener="#{ownerBean.excludeCar(car)}"></p:commandButton>
</p:column>
<p:column headerText="id_Car" >
<h:outputText value="#{car.id_car}"></h:outputText>
</p:column>
<p:column headerText="id_owner" >
<h:outputText value="#{car.id_owner}"></h:outputText>
</p:column>
<p:column headerText="tipo_carro" >
<h:outputText value="#{car.tipo_carro}"></h:outputText>
</p:column>
<p:column headerText="modelo_carro" >
<h:outputText value="#{car.modelo_carro}"></h:outputText>
</p:column>
</p:dataTable>
</p:panelGrid>
</h:form>
我的豆子:
package com.tutorial;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
@ManagedBean(name="ownerBean")
@SessionScoped
public class OwnerBean {
@ManagedProperty(value = "#{ownerDAO}")
private OwnerDAO ownerDAO;
public void setOwnerDAO(OwnerDAO ownerDAO) {
this.ownerDAO = ownerDAO;
}
private Owner ownerSelected;
public void excludeOwner(Owner owner) {
System.out.println("Excluding " + owner.getName());
}
public void excludeCar(Car car) {
System.out.println("Excluding car " + car.getModelo_carro());
}
public void onRowSelect(SelectEvent event) {
FacesMessage msg = new FacesMessage("Owner Selected", Integer.toString(
( (Owner) event.getObject()).getId_owner()));
FacesContext.getCurrentInstance().addMessage(null, msg);
ownerSelected = (Owner) event.getObject();
ownerSelected.setListCars(new ArrayList<Car>());
ownerSelected.setListCars(ownerDAO.getCars(ownerSelected));
}
public List<Owner> getRetornaOwners() {
List<Owner> list = new ArrayList<>();
try {
list = ownerDAO.getOwners();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public Owner getOwnerSelected() {
return ownerSelected;
}
public void setOwnerSelected(Owner ownerSelected) {
this.ownerSelected = ownerSelected;
}
}
excludeOwner(所有者所有者)函數可以正常工作,但excludeCars(Car car)則不能。 我總是無法獲得汽車價值。
謝謝
我在commandButton中使用process =“ @ this”並可以工作。 另外,我從commandButton中刪除了update屬性,並從ajax中刪除了process屬性。 非常感謝
阿賈克斯:
<p:ajax update="form:dtCars" event="rowSelect" listener="#{ownerBean.onRowSelect}" />
命令按鈕:
<p:commandButton value="Exclude" process="@this" actionListener="#{ownerBean.excludeCar(car)}"></p:commandButton>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.