有一个页面用ui:重复绑定到列表集合,如下所示:
<ui:repeat value="#{myBean.products}" var="product">
....
....
<h:selectOneMenu id="type" required="true" value="#{product.category}">
<f:selectItems value="#{productcategories}"/>
</h:selectOneMenu>
</ui:repeat>
我有一个正在显示的产品列表,它们绑定到产品字段的下拉列表中。
它工作正常,但#{productcategories}的数量非常大,约有500个类别并且正在增加,因此对于每次重复,下拉项目都会输出到HTML文件中。这会增加文件大小,特别是当产品列表在每页50个项目中时,有没有办法通过在多个下拉列表中共享h:selectItems来减小输出HTML的大小?
有人有任何想法吗?
答案 0 :(得分:1)
那是不可能的。这就是HTML的本质。由<option>
生成的HTML <f:selectItems>
元素必须包含在JSF <select>
生成的<h:selectOneMenu>
元素中,并且不能从彼此引用。
您可以考虑通过rendered
属性在服务器端有条件地呈现(显示/隐藏)组件,以便生成的HTML输出不那么大。您还可以考虑在您正在使用的servlet容器中对响应启用GZIP压缩,以便节省网络带宽。