2012-02-24 59 views
9

Tôi đang sử dụng JSF 2. Tôi đang cố gắng giải quyết tham chiếu gói thư động một thuộc tính bean được quản lý. Giá trị chứa tên gói cũng như khóa. Điều này là bắt buộc vì giá trị có thể đến từ một trong vài nhóm khác nhau. Tôi đã thử nhiều hoán vị, nhưng giá trị từ bean dường như luôn luôn được giải quyết như một chuỗi chữ (xuất ra với dấu ngoặc EL) và bó không bao giờ được gọi để giải quyết và trả về giá trị. Bất kỳ ý tưởng?Cách lấy giá trị thuộc tính gói tài nguyên JSF trong bean sao lưu?

Tôi đã thử:

#{bundle['key']} 
${bundle['key']} 
bundle['key'] 

Chúng được outputted chính xác như nó vốn có, cũng trong một <h:outputText>. Nó hoạt động tốt nếu tôi viết nó trực tiếp trong trang. Lý thuyết của tôi là JSF không nhận ra nó phải xử lý String như một biểu thức. Có cách nào để ép buộc nó không?

Trả lời

17

EL sẽ chỉ được giải quyết trong chế độ xem chứ không phải trong mô hình. Nó sẽ là một lỗ hổng tấn công tiêm EL lớn cho phép người dùng cuối nhập các biểu thức EL tùy ý vào các trường đầu vào và giải quyết chúng. Không, bạn không thể ép buộc nó theo bất kỳ cách nào.

Bạn cần phải tự khắc phục. Bạn có thể làm điều đó bằng hoặc đánh giá nó lập trình sử dụng Application#evaluateExpressionGet():

FacesContext context = FacesContext.getCurrentInstance(); 
String value = context.getApplication().evaluateExpressionGet(context, "#{bundle['key']}", String.class); 
// ... 

Hoặc, trong trường hợp đặc biệt này, bằng cách chỉ sử dụng ResourceBundle API trực tiếp giống như JSF đang làm theo bao gồm:

ResourceBundle bundle = ResourceBundle.getBundle(basename, FacesContext.getCurrentInstance().getViewRoot().getLocale()); 
String value = bundle.getString("key"); 
// ... 
+0

Cảm ơn bạn BalusC cho nhanh chóng của bạn và phản ứng hữu ích, điều này đã trả lời câu hỏi của tôi. – RobP

+0

Bạn được chào đón. – BalusC

1

Thử này ..

Resource Bundle tham chiếu bởi msg

USD=$ 

mã xhtml:

<c:set var="key" value="#{managedBean.currencyCode}" /> 
<h:outputText value="#{msg[key]}"/> 

này nên làm việc ..

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