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 library
và name
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']}"/>
Đ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 –