2012-03-26 30 views
9

Tôi đang sử dụng h: outputText để hiển thị một giá trị. Tôi muốn giới hạn giá trị được hiển thị sao cho khi nó dài hơn 50 ký tự, nó bị cắt ngắn thành 50 ký tự và dấu chấm lửng được thêm vào giá trị cắt ngắn. Ví dụ:JSF 2.0: Giới hạn giá trị của h: outputtext tới một số ký tự cụ thể

This is some text that has been trun... 

Tôi biết tôi có thể đạt được điều này trong đậu ủng hộ nhưng tôi đã tự hỏi nếu có ai biết của bất kỳ thẻ mà có thể đạt được điều này mà không cần thêm mã để các quản lý được. Có vẻ như một trường hợp sử dụng phổ biến.

Cảm ơn.

Trả lời

4

Sử dụng trình chuyển đổi JSF tùy chỉnh như được giải thích trong "JSF for nonbelievers". Here's ví dụ về công cụ chuyển đổi cắt ngắn văn bản.

+0

Cảm ơn. Tôi cũng tìm thấy một phần trong phiên bản 3 của Máy chủ lõi Java với giao diện thực hiện các trình chuyển đổi tùy chỉnh và các thẻ chuyển đổi. –

23

Bạn có thể sử dụng JSF EL .. ví dụ

<h:outputText value="#{bean.string.length() gt 50 ? bean.string.substring(0,47).concat('...') : bean.string}" /> 
+3

Thật tẻ nhạt khi lặp lại cùng một logic trên mọi nơi khi cần thiết. Sau đó sẽ dễ dàng có một bộ chuyển đổi đơn và có thể tái sử dụng hoặc thậm chí là một chức năng EL cho điều đó. Thư viện tiện ích JSF OmniFaces có một hàm 'of: abbreviationate()' cho chính mục đích đó. – BalusC

+0

Bạn đúng .. nhưng giả sử rằng trường hợp là cắt chuỗi của thuộc tính như .. Trong trường hợp này, việc sử dụng trình biến đổi không phải là tùy chọn tốt nhất. – YAM

+3

Đó là chính xác khi một hàm EL hữu ích. – BalusC

3

Như BalusC đề cập, OmniFace của of:abbreviate() có thể là một giải pháp tốt cho vấn đề của bạn:

<p>Abbreviate a long string: #{of:abbreviate(string1, 20)}</p> 
+2

Chỉ cần sử dụng này, hoạt động tuyệt vời, để tham khảo nhập khẩu không gian tên là: xmlns: of = "http://omnifaces.org/functions" –

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