2016-04-22 16 views
-1

UPDATE:PrimeFaces Füllung Datentabelle mit Liste <Object> in einer anderen Liste <Object>

fand ich, dass das Problem mit der Datagrid nicht in einer Liste durch eine Liste Looping ein Problem auf der XML-Code auf dieser Seite war. Jetzt liest das DataGrid die Liste und durchläuft sie, wobei auf dem Namen basierende Bereiche erstellt werden. Das Problem scheint nun auf bestimmte Eigenschaften in dieser Liste zuzugreifen.

<p:dataGrid value="#{objList.objList2}" var="objList2" columns="1"> 
    <p:panel id="obj2" header="#{objList2.name}" toggleable="true" collapsed="false"> 
       <h:panelGrid columns="2" style="width: 100%" columnClasses="scenario-viewer-leftcolumn,scenario-viewer-rightcolumn"> 
        <h:outputText value="Output Name:" /> 
        <p:inputText value="#{objList2.objType}" styleClass="textBoxStyle"/> 
        <h:outputText value="Output Bool:" /> 
        <p:selectBooleanCheckbox value="#{objList2.boolVar}"/> 
       </h:panelGrid> 
     </p:panel> 
</p:dataGrid> 
    </p:panel> 
</p:dataGrid> 

Wenn ich versuche, eine Variable für den Zugriff unter objList2 die Fehlermeldung, dass die Klasse obj2 gibt mir ist eine lesbare Eigenschaft nicht haben ‚objType‘. Ich habe überprüft, und es hat diese Eigenschaft/Variable und es wird initialisiert.

Was noch seltsamer ist, wenn ich objList2.boolVar anstelle von objList2.name in der Kopfzeile für jedes Panel verwenden, zeigt es die Informationen fein. Dies beweist, dass die Eigenschaft existiert und initialisiert wird. Warum würde das nicht in InputText funktionieren? Jede Hilfe würde sehr geschätzt werden.

ORIGINAL:

ich mit PrimeFaces arbeite und versuche, eine xhtml Form für meine UI zu erstellen. Ich versuche, Daten aus einer Liste in einer DataGrid-Struktur dynamisch anzuzeigen. Ich bin in der Lage, dies erfolgreich zu tun, aber ich muss auch Daten aus einer Liste in der ersten Liste anzeigen.

Zum Beispiel:

Ich habe eine Liste unter der Variablen objList, die ich für meine erste Datagrid verwenden. Ich bin in der Lage, diese Liste durchzulaufen und Felder für jedes Objekt und einige andere String-Daten pro Objekt zu erstellen.

<p:dataGrid value="#{scenarioTree.objList}" var="objList" columns="1"> 
     <p:panel id="obj" header="#{objList.name}" toggleable="true" collapsed="true"> 
      <h:panelGrid columns="2" style="width: 100%" columnClasses="scenario-viewer-leftcolumn,scenario-viewer-rightcolumn"> 
      <h:outputText value="text:" /> 
      <p:inputText value="#{objList.variable}" styleClass="textBoxStyle"/> 
      <h:outputText value="text2:" /> 
      <p:inputText value="#{objList.variable2}" styleClass="textBoxStyle"/> 
     </h:panelGrid> 

Jetzt möchte ich in der Lage sein, eine zweite Datagrid zu erstellen, die auf objList2 bezieht, die innerhalb objList1 ist. Dies führt jedoch dazu, dass in der Benutzeroberfläche keine Datensätze gefunden werden, obwohl dort eine Menge Datensätze vorhanden sind.

<p:dataGrid value="#{objList.objList2}" var="objList2" columns="1"> 
    <p:panel id="obj2" header="#{objList2.name}" toggleable="true" collapsed="false"> 
     </p:panel> 
</p:dataGrid> 
    </p:panel> 
</p:dataGrid> 

Ist das ein Fehler mit PrimeFaces oder kann ich das nicht? Oder mache ich das falsch?

Antwort

0

Immer wenn wir reden über Iteration Liste in XHTML haben wir DataTable, DataGrid, etc und panelGrid auch becoz dataTable und alle anderen sind Kind von panelGrid (wir können sagen, becoz panelGrid wird auch Tabelle und andere auch ich bedeuten Kind dieser Art und Weise), so ist in diesem Fall versuchen, die innere Liste in panelGrid laufen, da Sie panelGrid verwenden und aufgerufene Variable Liste so intern JSF wie dies zu verstehen gehen:

objList.get(i).getVariable();//For the first row 

aber nach Ihrem Code es ist Verständnis wie folgt:

objList.getVariable(); 

, die gar nicht vorhanden ist, so dass es Panel Ausgabe nehmen schenkt finde ich es nicht verwenden und verwenden wie folgt ist:

<p:panelGrid value="#{objList}" var="obj"> 
//Access properties inside that 
</p:panelGrid> 

Sie <f:facet> Tag verwenden können, wenn Sie etwas in Header wollen

+1

hat kein Attribut namens value. Deshalb verwende ich ein DataGrid. Mein panelGrid dient nur der Formatierung. – BlueMoose