Hallo zusammen,
ich versuche gerade bei meiner Anwendung eine Maske zu bauen, in der ein Datensatz verwaltet werden soll.
Ich habe schonmal aufgrund der Ladezeiten die Maske so umgebaut, dass sie nur eine reine Darstellung macht. Einfache Datumsfelder und Textfelder kann man natürlich einfach bearbeiten.
Ich denke auch, wenn ich für die ENUMs ein einfaches DropDown mache, dann wird das den Server Lade-Technisch auch nicht sonderlich interessieren.
Aber dann gibt es da noch Felder, deren Werte aus Schlüsseltabellen gezogen werden oder bei denen die Werte aus komplett anderen Entitäten gesucht werden müssen.
Fangen wir also mal klein an.
Die Schlüsselwerte setzen sich aus zwei Tabellen zusammen:
Also für ein bestimmtes Feld sollen nur KeyValue aus einer KeyRange zulässig sein. Dafür verwende ich aktuell die NamedQuery KeyValue.getByRange. Bedeutet aber, dass er bei 5 Solcher Felder auf der Maske 5 Mal suchen müsste.
Sobald ich in meiner Maske einen Dialog einbaue:
Dauert die Ladezeit unglaublich lange, weil er nur zur Anzeige der Maske schon #{windowsOrderHandler.institutes} aufbaut. Wenn man den Dialog öffnet, dann nochmal und wenn man ihn schließt, schonwieder. Mal ab von der Tatsache, dass die Liste im Dialog leer angezeigt wird, aber das liegt mit Sicherheit an mir.
Ich hätte also schon mal gerne, dass der Inhalt des Dialogs nur geladen wird, wenn der Dialog auch angezeigt werden soll.
Dann bräuchte ich für das Schlüssel Ding einen Dialog, dem ich dann einfach die KeyRange füttern kann und in dieser dann nur die Werte aus der KeyRange angezeigt werden.
Ist das in Primefaces 12 möglich? Ein Update auf 13 wäre problemlos möglich, wenn benötigt.
ich versuche gerade bei meiner Anwendung eine Maske zu bauen, in der ein Datensatz verwaltet werden soll.
Ich habe schonmal aufgrund der Ladezeiten die Maske so umgebaut, dass sie nur eine reine Darstellung macht. Einfache Datumsfelder und Textfelder kann man natürlich einfach bearbeiten.
Ich denke auch, wenn ich für die ENUMs ein einfaches DropDown mache, dann wird das den Server Lade-Technisch auch nicht sonderlich interessieren.
Aber dann gibt es da noch Felder, deren Werte aus Schlüsseltabellen gezogen werden oder bei denen die Werte aus komplett anderen Entitäten gesucht werden müssen.
Fangen wir also mal klein an.
Die Schlüsselwerte setzen sich aus zwei Tabellen zusammen:
Java:
@Entity
@Table(name = "S_KEYRANGE")
public class KeyRange {
@Id
@Column(name = "UUID", length = 36)
private String guid;
@Column(name = "NAME", length= 255)
private String name;
@OneToMany(mappedBy = "keyRange")
private Set<KeyValue> keyValues;
}
Java:
@Entity
@Table(name = "S_KEYTAB")
@NamedQueries ( value={
@NamedQuery(name = "KeyValue.getByNameAndRange", query = "SELECT k FROM KeyValue k JOIN k.keyRange r WHERE k.keyName = :KEYNAME AND r.name = :KEYRANGE"),
@NamedQuery(name = "KeyValue.getByRange", query = "SELECT k FROM KeyValue k JOIN k.keyRange r WHERE r.name = :KEYRANGE"),
})
public class KeyValue {
@Id
@Column(name = "UUID", length = 36)
private String guid;
@Column(name = "KEYNAME", length = 255)
private String keyName;
@Column(name = "DISPLAYNAME", length = 255)
private String displayname;
@JoinColumn(name = "KEYRANGE", referencedColumnName = "UUID" )
private KeyRange keyRange;
}
Sobald ich in meiner Maske einen Dialog einbaue:
HTML:
<p:dialog header="Institut wählen" id="clientChoose" widgetVar="clientChoose" minHeight="40" width="500" showEffect="fade">
<p:selectOneListbox value="#{windowsOrderHandler.selectedInstitute}"
var="c" filter="true" filterMatchMode="contains" filterNormalize="true">
<f:selectItems value="#{windowsOrderHandler.institutes}" var="inst" itemLabel="#{inst.clientNo} - #{inst.clientName}" itemValue="#{inst}"/>
</p:selectOneListbox>
<f:facet name="footer">
<p:commandButton value="Übernehmen" icon="pi pi-check" actionListener="#{windowsOrderHandler.selectInstitute(proIpsSearchHandler.selectedDetailEntity)}"
update="waaTab clientChoose" process="clientChoose @this" />
<p:commandButton value="Abbruch" icon="pi pi-times" onclick="PF('clientChoose').hide()" class="ui-button-secondary" type="button" />
</f:facet>
</p:dialog>
Ich hätte also schon mal gerne, dass der Inhalt des Dialogs nur geladen wird, wenn der Dialog auch angezeigt werden soll.
Dann bräuchte ich für das Schlüssel Ding einen Dialog, dem ich dann einfach die KeyRange füttern kann und in dieser dann nur die Werte aus der KeyRange angezeigt werden.
Ist das in Primefaces 12 möglich? Ein Update auf 13 wäre problemlos möglich, wenn benötigt.