2011-07-12 42 views
11

Tôi làm việc với một nhóm JSF đang phát triển giao diện người dùng. Chúng tôi đang xuất một trường INPUT và tôi cần bao gồm placeholder và một số thuộc tính data- vào thẻ được hiển thị. Tuy nhiên, JSF đang loại bỏ chúng. Tôi không biết JSF đủ để giúp đỡ nhiều cho nhóm JSF, nhưng tôi nghĩ ít nhất tôi có thể hỏi xung quanh.JSF 2.0 loại bỏ các thuộc tính HTML5 cần thiết

Chúng tôi đã sử dụng phiên bản cũ hơn của JSF nhưng đã nâng cấp lên 2.0 vì dường như nó hỗ trợ HTML5. đây không phải là trường hợp à? Có cách nào để giải quyết vấn đề này không?

Trả lời

9

JSF không loại bỏ chúng một cách chính xác. Nó chỉ bỏ qua chúng vì chúng không nằm trong số các thuộc tính được hỗ trợ/đã biết của thành phần được đề cập. Trong trường hợp ví dụ: <h:inputText> (hiển thị theo mặc định thẻ HTML <input type="text">), bạn có thể tìm tất cả các thuộc tính được hỗ trợ trong view declaration language (VDL) documentation.

Để khắc phục điều này, bạn cần phải tạo một custom component hoặc, tốt hơn, chỉ cần custom renderer ghi đè trình kết xuất chuẩn <h:inputText> và đưa các thuộc tính tùy chỉnh vào tài khoản.

+0

Cảm ơn, Balus. Đó chính xác là con đường chúng ta sẽ đi. Viết trình kết xuất của riêng chúng tôi cho tất cả các thẻ của chúng tôi. Tedius, nhưng nên đưa chúng ta đến đó. –

+2

[đây là trình kết xuất tùy chỉnh] (http://stackoverflow.com/questions/6859520/adding-custom-attribute-html5-support-to-jsf-2-0-uiinput-component) –

0

Nếu bạn đang sử dụng Facelet, bạn có thể chỉ cần viết trong các thành phần HTML5 biểu thức EL.

Ví dụ video:

<video name="myVideo" poster="#{bean.poster}" > 
    <source src="#{bean.vidoeSrc}" type='video/ogg; codecs=&quot;theora, vorbis&quot;' /> 
</video> 

Bằng cách này bạn có thể sử dụng bất kỳ thành phần HTML5 - và các ràng buộc sẽ là JSF như các thành phần JSF khác. bạn cũng có thể sử dụng cùng một ý tưởng trong phần tử đầu vào của HTML.

EDITED

Đối với placeholder bạn có thể sử dụng PrimeFaces inplace. Kiểm tra các thành phần của họ để biết thêm chi tiết.

+0

Bạn có thể giải thích thêm một số? Tôi không chắc EL là gì. Vấn đề cụ thể của chúng tôi là nhận các thuộc tính 'data- *' và 'placeholder' để chuyển sang HTML. Có vẻ như chúng ta sẽ phải viết trình kết xuất của riêng mình. –

+0

@DA: EL (Ngôn ngữ biểu hiện) là những thứ '# {}'. Xem thêm http://stackoverflow.com/tags/el/info Sau khi tất cả, tôi tin rằng Odelya nhầm lẫn các thuộc tính HTML5 ** ** với các thẻ HTML5 ** **. – BalusC

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