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;
   }
  }

Я действительно застрял и не понимаю, что я делаю неправильно, это просто не сработает, любая помощь или идеи будут оценены! Спасибо

0 ответов

Другие вопросы по тегам