Hallo,
ich habe eine DataTable in der die Einträge einer Entity mit ManyToOne-Verknüpfung zu einer weiteren Entity angezeigt werden. Das funktioniert soweit.
Wenn ich nun die DataTable in eine Komponente auslagere funktioniert die Anzeige nur solange ich nicht auf eine Eigenschaft des Unterobjekts zugreife (ManyToOne).
Wie gekomme ich das hin, dass die Composite Component auch Eigenschaften des Unterobjekts anzeigt? Ich hoffe die Frage ist verständlich formuliert. Ich bin Java-Newbie.
Angezeigte Fehlermeldung:
Beispiel ohne eigene Composite Component funktioniert:
Das funktioniert (Verweis auf Property aus der Entity license):
Das funktioniert nicht (Verweis auf Property eines ManyToOne-Objekts der Entity license):
Die Composite Component:
Die Entity-Bean:
Vielen Dank im Voraus und ein schönes Wochenende.
Bastian
ich habe eine DataTable in der die Einträge einer Entity mit ManyToOne-Verknüpfung zu einer weiteren Entity angezeigt werden. Das funktioniert soweit.
Wenn ich nun die DataTable in eine Komponente auslagere funktioniert die Anzeige nur solange ich nicht auf eine Eigenschaft des Unterobjekts zugreife (ManyToOne).
Wie gekomme ich das hin, dass die Composite Component auch Eigenschaften des Unterobjekts anzeigt? Ich hoffe die Frage ist verständlich formuliert. Ich bin Java-Newbie.
Angezeigte Fehlermeldung:
Code:
/resources/ezcomp/eDataTable.xhtml @31,71 value="#{rowData[cc.attrs.test]}": The class 'de.insecma.ilm.License' does not have the property 'product.shortname'.
Beispiel ohne eigene Composite Component funktioniert:
HTML:
<p:dataTable id="tbl" var="license" value="#{licenseController.licenseList}">
<f:facet name="header">
DataTable
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Produkt" />
</f:facet>
<h:outputText value="#{license.product.shortname}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Datum" />
</f:facet>
<h:outputText value="#{license.createdAt}"></h:outputText>
</p:column>
</p:dataTable>
Das funktioniert (Verweis auf Property aus der Entity license):
HTML:
<mc:eDataTable data="#{licenseController.licenseList}" test="createdAt" />
Das funktioniert nicht (Verweis auf Property eines ManyToOne-Objekts der Entity license):
HTML:
<mc:eDataTable data="#{licenseController.licenseList}" test="product.shortname" />
Die Composite Component:
HTML:
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="data" />
<cc:attribute name="test" />
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<p:dataTable var="rowData" value="#{cc.attrs.data}">
<f:facet name="header">
DataTable
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Produkt" />
</f:facet>
<h:outputText value="#{rowData[cc.attrs.test]}" />
</p:column>
</p:dataTable>
Die Entity-Bean:
Java:
@Entity
public class License implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@JoinColumn(name = "productId")
@ManyToOne()
@NotNull
private Product product;
@NotNull
@Temporal(javax.persistence.TemporalType.DATE)
private Date createdAt;
Vielen Dank im Voraus und ein schönes Wochenende.
Bastian