Pracuję nad JSF2.2 w moim miejscu pracy. Mój Faces-config.xml ma znacznik pakietu zasobów, który pomaga mi przypisać zmienną do pliku właściwości i użyć tej zmiennej w elemencie EL.
<resource-bundle>
<base-name>properties.common</base-name>
<var>prop</var>
</resource-bundle>
Znalazłem też inny sposób na osiągnięcie tego celu za pomocą takiego tagu f: loadBundle
<f:loadBundle basename="properties.common" var="prop"/>
Ale to jest zlokalizowane rozwiązanie, co oznacza, że musiałbym napisać to na każdej stronie.
Czy to zadziała, jeśli zdefiniuję to w szablonie? Jeśli tak, jak to osiągnąć?
Czy istnieje inny sposób, w jaki mogę globalnie zadeklarować zasób za pomocą zmiennej, która ma być używana w elemencie EL (jak w przypadku twarzy-config.xml)
Odpowiedzi:
1 dla odpowiedzi № 1Czy to zadziała, jeśli zdefiniuję to w szablonie?
Tak.
Jeśli tak, jak to osiągnąć?
Zrób dokładnie to, co powiedziałeś. Zdefiniuj to w szablonie.
Czy istnieje inny sposób, w jaki mogę globalnie zadeklarować zasób za pomocą zmiennej, która ma być używana w elemencie EL (jak w przypadku twarzy-config.xml)
Umieść go w mapowaniu żądań w (post) konstruktorze komponentu bean o zasięgu, do którego odwołuje się widok.
ResourceBundle bundle = ResourceBundle.getBundle("properties.common", facesContext.getViewRoot().getLocale());
externalContext.getRequestMap().put("prop", bundle);
Może być nawet określany jako właściwość komponentu bean o zasięgu żądania, co gwarantuje konstrukcję fasoli, nawet jeśli nie ma odniesienia w innym miejscu widoku.
0 dla odpowiedzi nr 2
Właśnie tego szukam, zobacz mój post https://stackoverflow.com/questions/24461307/jsf-2-external-resource-bundle
ResourceBundle bundle = ResourceBundle.getBundle("properties.common",facesContext.getViewRoot().getLocale());
externalContext.getRequestMap().put("prop", bundle);
Dziękuje wszystkim...