Tôi đang cố gắng viết trình kết xuất xử lý thuộc tính placeholder
trên thành phần <h:inputText>
. Tôi đi đến con đường này sau khi đọc JSF 2.0 strips out needed HTML5 attributes và có vẻ như chính xác. Dưới đây là tùy chỉnh của tôi rendererThêm hỗ trợ thuộc tính tùy chỉnh (HTML5) vào thành phần UIInput JSF 2.0
public class InputRenderer extends com.sun.faces.renderkit.html_basic.TextRenderer{
@Override
public void encodeBegin(FacesContext context, UIComponent component)
throws IOException {
System.out.println("Rendering :"+component.getClientId());
String placeholder = (String)component.getAttributes().get("placeholder");
if(placeholder != null) {
ResponseWriter writer = context.getResponseWriter();
writer.writeAttribute("placeholder", placeholder, "placeholder");
}
super.encodeBegin(context, component);
}
@Override
public void decode(FacesContext context, UIComponent component) {
super.decode(context, component);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component)
throws IOException {
super.encodeEnd(context, component);
}
}
Và renderer này được đăng ký trong khuôn mặt cấu hình như
<render-kit>
<renderer>
<component-family>javax.faces.Input</component-family>
<renderer-type>javax.faces.Text</renderer-type>
<renderer-class>com.example.renderer.InputRenderer</renderer-class>
</renderer>
</render-kit>
này được đăng ký tốt, không có vấn đề đó.
Mục đích của tôi là xử lý thuộc tính placeholder
, chèn thuộc tính đó, và sau đó ủy quyền xử lý thành siêu. Mã trên của tôi không hoạt động vì tôi đang chèn thuộc tính ở vị trí sai. Nó phải được chèn sau khi writer.startElement('input')
đã được thực hiện. Tuy nhiên, startElement phải xảy ra ở đâu đó trong phương thức encodeBegin()
của siêu. Vậy làm cách nào để chèn thuộc tính tùy chỉnh ('trình giữ chỗ' trong trường hợp này) và sau đó tiếp tục luồng thực thi?
NB: Đoạn mã trên không thêm thuộc tính placeholder
nhưng không ghi vào thành phần đầu vào mà tôi dự định, nó viết nó cho cha mẹ của đầu vào (vì tôi đang cố gắng viết thuộc tính trước khi thành phần đó thực sự là được viết trong luồng, nó áp dụng thuộc tính cho thành phần hiện tại)
Đây là câu trả lời thực tế nhất và tốt nhất! :) – Nikhil
Cảm ơn bạn đã phản hồi và trong khi đây là câu trả lời hợp lý, mã có lỗi. Sự trở lại của get (attribute) là một đối tượng, có thể là một Boolean (xem xét thuộc tính 'required'). Loại bỏ toàn bộ chuỗi (String) và thiết lập kiểu trả về là Object. –
Lưu ý rằng điều này không hoạt động với '' cha mẹ với '' con. JSF đặt thuộc tính 'required' vào phần tử' 'thay vì phần tử' '. Tôi có nói rằng tôi yêu JSF không? –
6
+0
2
+0
Các vấn đề liên quan
-
1. Thêm hỗ trợ thuộc tính tùy chỉnh (HTML5) vào Primefaces (3.4)
-
2. Thêm thuộc tính tùy chỉnh vào thành phần tự động hoàn thành Primefaces trong JSF
-
3. JSF 2.0 loại bỏ các thuộc tính HTML5 cần thiết
-
4. Thêm thuộc tính css vào thành phần
-
5. Javascript để thêm thuộc tính tùy chỉnh vào một số thành phần
-
6. Thành phần tùy chỉnh JSF không được tìm thấy
-
7. cách tạo thuộc tính thành phần tùy chỉnh?
-
8. JSF 1.2 JSP 2.0 Tệp thẻ tùy chỉnh đơn giản với các thuộc tính
-
9. Thêm hỗ trợ cho QuickTime cho phần cứng đầu vào video tùy chỉnh
-
10. Làm cách nào để thêm các thành phần JSF hiện có vào các thành phần tùy chỉnh của riêng tôi?
-
11. IDE Eclipse có hỗ trợ JSF 2.0 không?
-
12. JSF thành phần tùy chỉnh mất tiêu điểm đầu vào trên bản cập nhật ajax
-
13. Thêm thuộc tính tùy chỉnh vào khung thực thể?
-
14. Thêm thuộc tính tùy chỉnh vào asp.NET RadioButton control
-
15. Thêm thuộc tính tùy chỉnh vào Tác vụ?
-
16. Thêm thuộc tính vào điều khiển WPF tùy chỉnh?
-
17. Cách thêm tài liệu vào thuộc tính tùy chỉnh?
-
18. JSF 2 thành phần Tuỳ chỉnh có Expression Language cho giá trị thuộc tính không kích hoạt các setter thuộc tính
-
19. Javascript DOM: Đặt thuộc tính phần tử DOM tùy chỉnh
-
20. Cách tạo thông báo 404 tùy chỉnh trong JSF 2.0?
-
21. làm javascript mô tả tài sản hỗ trợ các thuộc tính tùy chỉnh?
-
22. Thuộc tính HTML tùy chỉnh yêu cầu trợ giúp tùy chỉnh?
-
23. WTForms hỗ trợ cho thuộc tính chỉ đọc đầu vào?
-
24. i18n với các tệp thuộc tính được mã hóa UTF-8 trong ứng dụng JSF 2.0
-
25. Hỗ trợ Doctype HTML5
-
26. Có thể thêm thuộc tính tùy chỉnh vào một kiểu trong tài nguyên Android không?
-
27. Tạo thuộc tính có thể tùy chỉnh tùy chỉnh
-
28. Hỗ trợ codec video HTML5
-
29. Thêm thuộc tính Xml vào thuộc tính chuỗi
-
30. Địa chỉ phụ thuộc thành phần tùy chỉnh
Câu hỏi mới nhất
-
1. Không thể chơi video Qt5 đa phương tiện ubuntu 16.04
-
2. Xuất các phần tử của mảng bằng Arrays.toString()
-
3. chrome bỏ qua bao gồm tiêu đề trong ý định
-
4. GitFlow: hợp nhất để làm chủ trước hoặc sau khi phát hành sản phẩm?
-
5. Webrtc: Không thể xử lý câu trả lời của WebRTC
-
6. Rails "actions-as-taggable-on": cách thêm thẻ * đối tượng * vào thẻ có thể gắn thẻ, không phải theo tên
-
7. IOCP là một chuỗi đang chạy trong khi I/O đang diễn ra hay sau?
-
8. Làm thế nào để sắp xếp std :: vector nhưng không thay đổi các yếu tố cụ thể bằng cách sử dụng std :: sort?
-
9. Tìm kiếm không hoạt động trong "Chọn thư viện phụ thuộc" của Android Studio
-
10. Làm thế nào để thêm ngx-restangular để hạt giống góc?
-
1. Thêm hỗ trợ thuộc tính tùy chỉnh (HTML5) vào Primefaces (3.4)
-
2. Thêm thuộc tính tùy chỉnh vào thành phần tự động hoàn thành Primefaces trong JSF
-
3. JSF 2.0 loại bỏ các thuộc tính HTML5 cần thiết
-
4. Thêm thuộc tính css vào thành phần
-
5. Javascript để thêm thuộc tính tùy chỉnh vào một số thành phần
-
6. Thành phần tùy chỉnh JSF không được tìm thấy
-
7. cách tạo thuộc tính thành phần tùy chỉnh?
-
8. JSF 1.2 JSP 2.0 Tệp thẻ tùy chỉnh đơn giản với các thuộc tính
-
9. Thêm hỗ trợ cho QuickTime cho phần cứng đầu vào video tùy chỉnh
-
10. Làm cách nào để thêm các thành phần JSF hiện có vào các thành phần tùy chỉnh của riêng tôi?
Bạn chỉ có thể ghi đè phương thức startWriters startElement, phương thức đó chỉ được gọi một lần và sau đó bạn có thể khôi phục đối tượng responsewriter gốc.
Nguồn
2011-10-25 08:59:30 dileks
Trên đây hoạt động tốt hơn (mặc dù thiếu một số hàng nhập khẩu, tôi sửa chữa getWrapped() như trong JSF 1.2 hiện công khai, vv). Tôi nghĩ đây là câu trả lời hay nhất. Nó cũng có lẽ là tốt hơn để sử dụng nếu ("hằng số". Equals (giá trị)) như là xử lý null-kiểm tra như là hằng số sẽ không bao giờ bằng null nhưng sẽ không ném một NPE. Tôi bây giờ chính thức coi thường sự chuyển dịch của JSF như là một lựa chọn tốt hơn bằng cách nào đó nhưng đánh giá cao tất cả các thông tin phản hồi tốt ở đây (nhờ Joel để ủng hộ StackOverflow). –
Và để ghi đè cho MyFaces 2.0.8+
Nguồn
2013-12-13 05:36:08 Madhuri
Đối với những người đọc quá nhanh, bạn cũng cần thẻ từ trên tệp faces-config.xml. –
Các vấn đề liên quan