我的xhtml页面:
<h:form id="myform">
<p:panel header="Requests">
<p:tabView dynamic="true" cache="true">
<p:tab title="New requests">
<h:panelGrid columns="1" cellpadding="10">
<p:dataTable id="newReq" value="#{requestsBean.newRequests}" var="newReq" selectionMode="single" selection="#{requestsBean.selectedRequest}" rowKey="#{newRequest.id}" scrollRows="20" scrollable="true" liveScroll="false" scrollHeight="400" style="margin-bottom:0">
<p:ajax event="rowSelect" listener="#{requestsBean.onRowSelect}" update=":requestForm:requestDetail" oncomplete="PF('requestDialog').show()"/>
...Columns...
</p:dataTable>
</h:panelGrid>
</p:tab>
...One More Tab...
</p:tabView>
</p:panel>
</h:form>
<h:form id="requestForm">
<p:dialog header="Details" widgetVar="requestDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
<p:outputPanel id="requestDetail" style="text-align:center;">
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Req #:"/>
<h:outputText value="#{requestsBean.selectedRequest.reqNo}"/>
<h:outputText value="Submitted By:" />
<h:outputText value="#{requestsBean.selectedRequest.user}"/>
<h:outputText style="font-weight:bold;" value="Submitted On:"/>
<h:outputText value="#{requestsBean.selectedRequest.date}"/>
</h:panelGrid>
</p:outputPanel>
</p:dialog>
</h:form>
我的ManagedBean:
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.event.ActionEvent;
import javax.faces.view.ViewScoped;
import org.primefaces.event.SelectEvent;
import com.company.model.Requests;
import com.company.service.RequestsService;
@ViewScoped
public class RequestsBean implements Serializable {
@ManagedProperty(value = "#{requestsService}")
private RequestsService requestsService;
private Requests selectedRequest;
private List<Requests> newRequests;
public List<Requests> getNewRequests() {
if (newRequests == null) {
newRequests = requestsService.getNewRequests();
}
return newRequests;
}
public void onRowSelect(SelectEvent event) {
}
...getters...setters...
}
我的模特课程:
@Entity
@Table(name = "REQUESTS")
public class Requests implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "request_gen")
@SequenceGenerator(name = "request_gen", sequenceName = "REQUESTS_SEQUENCE")
@Column(name = "REQ_NO")
private Long reqNo;
@Column(name = "DATE", nullable = false)
private Date date;
@Column(name = "USER", nullable = false)
private Long user;
...getters setters...
}
列表查询使用所有详细信息(模型属性)获取请求。当我在数据表中选择一行时,对话框将打开并显示所需的结果,但会再次触发列表查询(使用newRequests = null再次调用方法getNewRequests())。我想阻止查询再次触发,因为已经使用RequestList获取了所有数据。
有人可以帮忙吗?