通过在h:selectOneMenu之间共享f:selectItems来减小HTML输出的大小?

时间:2011-04-13 13:26:33

标签: html jsf facelets

有一个页面用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的大小?

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

那是不可能的。这就是HTML的本质。由<option>生成的HTML <f:selectItems>元素必须包含在JSF <select>生成的<h:selectOneMenu>元素中,并且不能从彼此引用。

您可以考虑通过rendered属性在服务器端有条件地呈现(显示/隐藏)组件,以便生成的HTML输出不那么大。您还可以考虑在您正在使用的servlet容器中对响应启用GZIP压缩,以便节省网络带宽。