Ich habe eine Seite mit einer Benutzeroberfläche: Wiederhole diese Seite an eine Listensammlung wie die folgende gebunden:
<ui:repeat value="#{myBean.products}" var="product">
....
....
<h:selectOneMenu id="type" required="true" value="#{product.category}">
<f:selectItems value="#{productcategories}"/>
</h:selectOneMenu>
</ui:repeat>
Ich habe eine Liste von Produkten, die wie oben gezeigt für ein Dropdown-Menü in einem Produktfeld angezeigt werden.
Es funktioniert gut, aber die Anzahl der# {productcategories} ist sehr groß, ungefähr 500 Kategorien und steigt an, so dass bei jeder Wiederholung die Dropdown-Elemente in der HTML-Datei ausgegeben werden. Dies erhöht die Dateigröße insbesondere dann, wenn sich die Produktliste in den 50 Artikeln pro Seite befindet. Kann ich also die Größe des Ausgabe-HTML-Codes verringern, indem ich die h: selectItems in mehreren Dropdown-Listen teile?
Hat jemand Ideen?
Antworten:
1 für die Antwort № 1Das ist nicht möglich. Das ist die Natur von HTML. Das HTML <option>
Elemente generiert von <f:selectItems>
muss in die <select>
Element, das von JSF generiert wurde <h:selectOneMenu>
sowieso und kann nicht voneinander referenziert werden.
Sie könnten in Betracht ziehen, Komponenten auf der Serverseite durch das Symbol "" bedingt darzustellen (ein- / auszublenden) rendered
Attribut, so dass die generierte HTML-Ausgabe istweniger groß. Sie können auch die GZIP-Komprimierung für die Antwort in dem Servletcontainer aktivieren, den Sie verwenden, damit die Netzwerkbandbreite gespeichert wird.