2012-06-29 39 views
5

bố cục của h: selectOneRadio có thể nằm ngang hoặc dọc, vì vậy có cách tôi có thể thực hiện một số bố cục tùy chỉnh. Ví dụ, thay vì hiển thị 8 nút radio, hiển thị chúng trong 2 hàng với 4 hàng trên mỗi hàng? Vui lòng cung cấp câu trả lời của bạn bên cạnh giải pháp PrimeFaces p: selectOneRadio, nó sử dụng CSS3 khiến IE8 hiển thị nút radio theo hình chữ nhật.Cách bố trí tùy chỉnh h: selectOneRadio

+0

Bản sao có thể có của http://stackoverflow.com/questions/1150717/breaking-up-radio-buttons-into-columns-in-jsf/1152921 – Ravi

Trả lời

5

Không chính xác như vậy, nhưng bạn có thể sử dụng Tomahawk's<t:selectOneRadio> với thuộc tính layout được đặt thành "spread" để hiển thị nút radio không đánh dấu. Sau đó, bạn có thể sử dụng <t:radio> để đặt các nút radio riêng lẻ trong đánh dấu theo cách bạn muốn, chẳng hạn như trong một <h:panelGrid columns="4">.

Ví dụ:

<t:selectOneRadio id="foo" value="#{bean.selectedItem}" layout="spread"> 
    <f:selectItems value="#{bean.availableItems}" /> 
</t:selectOneRadio> 

<h:panelGrid columns="4"> 
    <t:radio for="foo" index="0" /> 
    <t:radio for="foo" index="1" /> 
    <t:radio for="foo" index="2" /> 
    <t:radio for="foo" index="3" /> 

    <t:radio for="foo" index="4" /> 
    <t:radio for="foo" index="5" /> 
    <t:radio for="foo" index="6" /> 
    <t:radio for="foo" index="7" /> 
</h:panelGrid> 

hoặc ngay cả khi số lượng các nút radio là không xác định

<h:panelGrid columns="4"> 
    <c:forEach items="#{bean.availableItems}" varStatus="loop"> 
     <t:radio for="foo" index="#{loop.index}" /> 
    </c:forEach> 
</h:panelGrid> 

(lưu ý rằng <ui:repeat> là không phù hợp vì nó chạy trong quá trình xem thời gian render và do đó kết thúc như là một cột duy nhất của <h:panelGrid>, bạn cần phải sử dụng HTML thuần túy <table> thay thế)

+0

Cảm ơn bạn rất nhiều :) Tomhawk làm việc cho bây giờ, nhưng khi tôi tải về Tomhawk qua mvn, nó tải về rất nhiều tập tin jar thêm, mà dường như một chút overkill cho tôi. Tôi thấy bạn có một hướng dẫn về tạo kiểu selectOneMenu bằng cách mở rộng MenuRenderer, tôi sẽ xem xét nó, có lẽ nó sẽ giúp tôi tạo ra một thành phần selectOneRadio tùy chỉnh. Cảm ơn bạn rất nhiều –

+0

Tomahawk là mã nguồn mở, bạn cũng có thể xem qua nó. Vâng, nó đi kèm với một loạt các phụ thuộc. Đối với một mình 't: selectOneRadio', chỉ những phụ thuộc Apache Commons là đủ, tất cả những thứ khác là không cần thiết. – BalusC

+0

Yup, nó đi kèm với rất nhiều phụ thuộc. Chúng tôi thêm phụ thuộc vào ứng dụng của chúng tôi qua maven, và tôi làm ' org.apache.myfaces.tomahawk tomahawk20 1.1.13', nó đi kèm với một toàn bộ rất nhiều, là có một cách để tránh điều này, BalusC ? –

Các vấn đề liên quan