2011-11-02 22 views
14
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/> 

Tôi muốn tính el bên trong trước và sau đó tính toán đường dẫn bằng API tài nguyên. Tôi đã thử sử dụng thẻ <c:set> nhưng biến của nó cũng là một EL, vì vậy nó không tạo ra bất kỳ sự khác biệt nào.lồng ghép các biểu thức el trong JSF cho API tài nguyên

Trả lời

23

Trong phiên bản EL 2.2 hiện tại, bạn không thể lồng biểu thức EL cũng như các biến EL chuỗi liên kết theo cách đó. Sử dụng <c:set> để chuẩn bị chìa khóa năng động trước khi sử dụng nó trong một biểu EL bằng cách đơn giản nội tuyến biểu thức EL trong một chuỗi:

<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" /> 
<p:graphicImage value="#{resource[resourceName]}"/> 

Một thay thế chỉ đơn giản là sử dụng libraryname thuộc tính thay vì tạo ra một URL dựa trên những qua #{resource} lập bản đồ:

<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" /> 

cập nhật: kể từ EL 3.0, bạn có thể sử dụng toán tử += để string-c oncatenate EL biến, nếu bạn thực sự không thể sử dụng library/name vì một số lý do.

<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/> 
+0

Điều này dựa vào chi tiết triển khai ui: param mặc dù - nó không hứa đặt biến trong ngữ cảnh mẫu hiện tại. Tôi sẽ tham khảo câu trả lời của BalusC: http://stackoverflow.com/a/20376916/1341535 –

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