JSF의 복합 컴포넌트에서 지역화가 어떻게 작동하는지에 대한 의문이 있습니다. 어떻게 작동하는지 잘 알고 싶습니다.JSF 2 복합 컴포넌트를 지역화하는 방법
그래서 약간의 예제로 복합 컴포넌트의 현지화를 연습하기로 결정했습니다. 권고 다음
는제가
labelField1 = FIELD 1
labelField2 = FIELD 2
는 그때 # {cc.resourceBundleMap 사용 복합체 성분은 정확히 동일한 폴더 (의 WebContent/리소스의 하위)에서 .properties 파일을 만들었다. 구성 요소의 implmentation에 지역화 된 텍스트를 추가 :
<html>
<composite:interface>
...
</composite:interface>
<composite:implementation>
<h:form>
<h:outputText value="#{cc.resourceBundleMap.labelField1}"/>
...
<h:outputText value="#{cc.resourceBundleMap.labelField2}"/>
...
</h:form>
</composite:implementation>
</html>
문제를 내가 응용 프로그램을 실행할 때 것은이 :
내 질문은
SEVERE: Error Rendering View[/index.xhtml]
javax.el.ELException: /resources/custom/demoCustomComponent.xhtml @14,63 value="#{cc.resourceBundleMap.labelField1}": java.lang.NullPointerException
....
Caused by: java.lang.NullPointerException
at javax.faces.component.UIComponent.findComponentResourceBundleLocaleMatch(UIComponent.java:1000)
... :
- 어떻게 든 메시지 묶음을 수동으로로드해야합니까, 아니면 자동으로 실행해야합니까?
- 복합 구성 요소가있는 폴더 외부의 내 응용 프로그램에 다른 메시지 묶음이 있습니까? (템플릿 및 UI의 다른 부분에 대한 message_en.properties도 앱에 있습니다)
- 어떻게 해결할 수 있습니까?
알겠습니다. UI 용 응용 프로그램의 다른 지역화는 파일 이름을 변경할 수 있습니다. 단지 faces-config.xml에 번들을 추가해야합니다. 하지만 다른 복합 구성 요소입니다. 이제 해결했습니다. 감사! – sfrj
그것은 나를 위해 작동하지 않습니다. 다른 언어에 대한 3 개의 .properties 파일 (및 _xx 접미사가없는 하나의 기본값)이 있으며 메시지는 항상이 기본 속성 파일에서 채워집니다. FacesContext.getCurrentInstance(). getViewRoot(). setLocale (locale)을 사용하여 언어를 변경하고 내 인터넷 브라우저의 lang 설정을 변경했습니다. Standart (복합 구성 요소 아님) L10n이 변경됩니다. 어떤 생각? – Ziletka