2011-10-19 3 views
0

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도 앱에 있습니다)

- 어떻게 해결할 수 있습니까?

답변

2

리소스 번들의 파일 이름은 구성 요소의 파일 이름과 정확히 일치하는 인 이어야합니다.

따라서 복합 구성 요소를 나타내는 파일이 demoCustomComponent.xhtml 인 경우 demoCustomComponent.properties 개의 파일에 현지화 된 메시지 (기본값)가 있어야합니다. 예를 들어 demoCustomComponent_es.properties으로 국제화 할 수 있지만 경로에는 항상 기본 경로가 있어야합니다.

+0

알겠습니다. UI 용 응용 프로그램의 다른 지역화는 파일 이름을 변경할 수 있습니다. 단지 faces-config.xml에 번들을 추가해야합니다. 하지만 다른 복합 구성 요소입니다. 이제 해결했습니다. 감사! – sfrj

+0

그것은 나를 위해 작동하지 않습니다. 다른 언어에 대한 3 개의 .properties 파일 (및 _xx 접미사가없는 하나의 기본값)이 있으며 메시지는 항상이 기본 속성 파일에서 채워집니다. FacesContext.getCurrentInstance(). getViewRoot(). setLocale (locale)을 사용하여 언어를 변경하고 내 인터넷 브라우저의 lang 설정을 변경했습니다. Standart (복합 구성 요소 아님) L10n이 변경됩니다. 어떤 생각? – Ziletka

관련 문제