JSF Primefaces Dialog Framework Представление в DataTable
Я пытаюсь показать диалоговую структуру как таблицу данных, когда вы нажимаете строку в другой таблице данных с другими значениями плюс значения из выбранной строки, что-то вроде подробного представления первой таблицы данных
Это основные данные:
<h:form id="form">
<p:growl id="growl" showDetail="true" />
<p:dataTable id="tableStateDT" var="con"
value="#{dtConsignmentSnView.sconsignments}"
widgetVar="consignmentsTable" multiViewState="true" rows="20"
paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
selectionMode="single"
selection="#{dtConsignmentSnView.selectedConsignment}"
rowKey="#{con.mReference}"
emptyMessage="No consignments found with given criteria"
filteredValue="#{dtConsignmentSnView.filteredConsignments}">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter"
onkeyup="PF('consignmentsTable').filter()" style="width:150px"
placeholder="Enter keyword" />
</p:outputPanel>
<p:commandButton value="Select Consignment" icon="ui-icon-extlink"
actionListener="#{dfView.selectedConsignment}">
</p:commandButton>
</f:facet>
<p:ajax event="rowSelect"
actionListener="#{dfView.selectedConsignment}" />
<p:column styleClass="centeredColumn" headerText="Reference"
filterBy="#{con.mReference}" sortBy="#{con.mReference}"
filterMatchMode="exact" colspan="2">
<h:outputText style="center;" value="#{con.mReference}" />
</p:column>
<p:column styleClass="centeredColumn" headerText="Site ID"
filterBy="#{con.mSiteId}" sortBy="#{con.mSiteId}"
filterMatchMode="exact" colspan="2">
<h:outputText style="center;" value="#{con.mSiteId}" />
</p:column>
<p:column styleClass="centeredColumn" headerText="Store"
filterBy="#{con.mStore}" sortBy="#{con.mStore}"
filterMatchMode="exact" colspan="2">
<h:outputText style="center;" value="#{con.mStore}" />
</p:column>
<p:column styleClass="centeredColumn" headerText="ETA/ATA"
filterBy="#{con.mEta}/#{con.mAta}"
sortBy="#{con.mEta}/#{con.mAta}" filterMatchMode="contains"
colspan="2">
<h:outputText style="center;" value="#{con.mEta}/#{con.mAta}" />
</p:column>
<p:column styleClass="centeredColumn" headerText="Status"
filterBy="#{con.mStatus}" sortBy="#{con.mStatus}"
filterMatchMode="exact" colspan="2">
<h:outputText style="center;" value="#{con.mStatus}" />
</p:column>
<p:column styleClass="centeredColumn" headerText="Details"
colspan="2">
<p:commandButtonn icon="ui-icon-extlink"
actionListener="#{dfView.selectedConsignment}">
<p:ajax event="dialogReturn" listener="#{dfView.onConsignmentChosen}"
update="growl" />
</p:commandButton>
</p:column>
<f:facet name="footer"></f:facet>
</p:dataTable>
</h:form>
Это таблица, которую я хочу показать:
<h:head>
<title>Selected Consignment for <h:outputText value="#{param['mClient']}"></h:outputText></title>
<style type="text/css">
.ui-widget {
font-size: 90%;
}
</style>
</h:head>
<h:body>
<h:form>
<p:dataTable id="conDetail" var="con" value="dtConsignmentSnView.selectedConsignment">
<p:column headerText="Reference">
<h:outputText value="#{con.mReference}" />
</p:column>
<p:column headerText="Status">
<h:outputText value="#{con.mStatus}" />
</p:column>
<p:column headerText="Adhoc">
<h:outputText value="#{con.mIsAdhoc}" />
</p:column>
</p:dataTable>
</h:form>
</h:body>
Бин dfview:
package com.ceva.template.webapp;
import java.util.HashMap;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
/**
* @author alexandru.castravet
*
*/
@ManagedBean(name = "dfView")
public class DfSelectedView {
/**
* @author alexandru.castravet
*
*/
public void selectedConsignment() {
Map<String, Object> options = new HashMap<String, Object>();
options.put("resizable", false);
options.put("draggable", false);
options.put("modal", true);
PrimeFaces.current().dialog.openDynamic("selectConsignment", options,
null);
}
}
И главный боб:
package com.ceva.template.webapp;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
/**
* @author alexandru.castravet
*
*/
@SuppressWarnings("serial")
@ManagedBean(name = "dtConsignmentSnView")
@SessionScoped
public class ConsignmentSnView implements Serializable {
public List<Consignment> sconsignments;
public List<Consignment> filteredConsignments;
public Consignment selectedConsignment;
@ManagedProperty("#{consignmentService}")
public ConsignmentService service;
@PostConstruct
public void init() {
sconsignments = service.createSmartnetTable(50);
}
/**
* @author alexandru.castravet
*
*/
public List<Consignment> getSconsignments() {
return sconsignments;
}
public List<Consignment> getFilteredConsignments() {
return filteredConsignments;
}
public Consignment getSelectedConsignment() {
return selectedConsignment;
}
public void setSelectedConsignment(Consignment selectedConsignment) {
this.selectedConsignment = selectedConsignment;
}
public void setFilteredConsignments(List<Consignment>
filteredConsignments) {
this.filteredConsignments = filteredConsignments;
}
public void setService(ConsignmentService service) {
this.service = service;
}
}
Я действительно застрял и не понимаю, что я делаю неправильно, это просто не сработает, любая помощь или идеи будут оценены! Спасибо