Một Converter
là intented để chuyển đổi từ trình giá trị tham số String
yêu cầu các đối tượng phức tạp và ngược lại trong các lĩnh vực đầu vào. Tuy nhiên, <f:param>
chỉ là đầu ra thuần túy và nó sẽ luôn gọi toString()
trên giá trị. Nó không hỗ trợ Converter
.
cược sạch nhất và tốt nhất của bạn là tạo ra một custom EL function, để cuối cùng bạn kết thúc như:
<f:param name="name" value="#{util:prettyUrl(name)}"/>
Cập nhật: thư viện tiện ích JSF OmniFaces có kể từ khi phiên bản 1.4 (tháng 3 năm 2013) thành phần <o:param>
mở rộng <f:param>
với sự hỗ trợ cho trình chuyển đổi JSF đầy đủ, giống hệt như bạn sử dụng trong <h:outputText converter>
.
<h:link outcome="/page" value="#{name}">
<o:param name="name" value="#{name}" converter="somePrettyURLConverter" />
</h:link>
Xem thêm showcase.
Tôi đã có cùng một câu hỏi và tôi không thực sự hài lòng với giải pháp như vậy. Trên trang web nhận 'f: viewParam' được sử dụng để truy lục đối tượng bằng cách sử dụng trình chuyển đổi. Vì vậy, nó sẽ được thẳng về phía trước để sử dụng một công cụ chuyển đổi với 'f: param' quá. Kể từ khi logic đó đã được thực hiện trong bộ chuyển đổi. Bây giờ, logic đó cũng có mặt trong khung nhìn và nếu tôi thay đổi tham số có thể từ tên thành id, tôi phải thay đổi công cụ chuyển đổi và trang web. Hàm el tùy chỉnh sẽ là một cách giải quyết, ít nhất là nếu trình biến đổi ban đầu cũng sẽ sử dụng nó. – djmj
đã thêm thẻ 'o: param' vào thư viện omnifaces của mình và nó hoạt động rất tốt. – djmj