Tôi đã sử dụng JSF + RF trong hơn 2 năm và không có cơ hội mở rộng khả năng hiện có của các thành phần.Mở rộng h: outputText cho chức năng tùy chỉnh
Bây giờ yêu cầu là tôi phải cắt chuỗi và hiển thị nó nếu nó có nhiều hơn 25 ký tự.
này đã đạt được như sau
<c:choose>
<c:when test="#{fn:length(teststep.name) > 25}">
<h:outputText title="#{teststep.name}" value="#{fn:substring(teststep.name, 0, 25)}..."/>
</c:when>
<c:otherwise>
<h:outputText title="#{teststep.name}" value="#{teststep.name}"/>
</c:otherwise>
</c:choose>
Nhưng tôi sử dụng mã này trong rất nhiều nhiều nơi (và muốn tránh mã boilerplate của 8 dòng mọi) nên nghĩ đến việc tùy chỉnh h: outputText để cung cấp chức năng trim.
Ông có thể cho tôi biết làm thế nào tôi sẽ viết một thẻ tùy chỉnh trong JSF
Kính trọng, Satya
Tôi đã thử các giải pháp 1 và didnt mà gây ấn tượng với tôi :) nhưng muốn làm điều gì đó như . Có phải là do bất kỳ cơ hội nào có thể vẫn giữ lại các tính năng của h: outputText và chỉ thêm một số khả năng hơn? –
Satya
Tôi sẽ thử cho lựa chọn thứ ba, dường như là một số việc học mới cho tôi :). Cảm ơn rất nhiều BalusC – Satya
Việc thêm thuộc tính mới vào thành phần hiện tại chỉ có thể được thực hiện bởi thành phần tùy chỉnh chứ không phải thẻ tùy chỉnh. Đây là một công việc rất tẻ nhạt. Bạn đã sao chép ** tất cả ** thuộc tính thẻ hiện tại vì không thể kế thừa từ các thẻ hiện tại. Dễ dàng hơn là cung cấp thuộc tính bổ sung là '' và ghi đè lên 'Trình kết xuất mặc định' mặc định. –
BalusC