/ / Reduzierung der HTML-Ausgabegröße durch gemeinsame Nutzung von f: selectItems zwischen h: selectOneMenu? - html, jsf, facelets

Reduzieren der HTML-Ausgabe durch gemeinsame Nutzung von f: selectItems zwischen h: selectOneMenu - HTML, JSF, Facelets

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 № 1

Das 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.