2011-04-13 3 views
0

다음과 같은 목록 컬렉션에 ui : repeat 바인딩 된 페이지가 있습니다.f : selectItems를 h : selectOneMenu?와 공유하여 HTML 출력 크기 줄이기

<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

그건 불가능합니다. 그것이 HTML의 특성입니다. <f:selectItems>에 의해 생성 된 <option> 요소는 어쨌든 JSF <h:selectOneMenu>에 의해 생성 된 <select> 요소에 있어야하며 서로 참조 할 수는 없습니다.

rendered 속성을 사용하여 서버 측에서 구성 요소를 조건부로 렌더링 (표시/숨기기)하여 생성 된 HTML 출력이 적을 수 있습니다. 사용중인 서블릿 컨테이너의 응답에서 GZIP 압축을 켜서 네트워크 대역폭이 저장되도록 할 수도 있습니다.

+0

표시/숨기기는 렌더링 할 필요가있는 옵션이 아닙니다. Gzip 소리가 더 좋지만 페이지 크기와 항목 수가 증가함에 따라 문제가 여전히 남아 있다고 생각합니다. – ManiP

+0

그런 다음 옵션을 선택하거나 함께 사용하십시오. Gzip은 확실히 도움이 될 것입니다. 응답 크기를 최대 70 %까지 줄일 수 있습니다. 예를 들어 Tomcat의 경우'/ conf/server.xml '의' '요소에''on =' '을 추가하는 것만 큼 쉽습니다. – BalusC