複合コンポーネント (Mojarra 2.2、Glassfish 4.0) のローカライズに問題があります。
ここでBalusC のソリューションを試して、複合コンポーネントと同じファイル名と拡張子を持つ複合コンポーネントと同じディレクトリにプロパティ ファイルを配置しました.properties
。これは、複合コンポーネントの定義から文字列を外部化するために機能します。
_en
しかし、(プロパティ ファイルのファイル名に接尾辞を追加することによって) 文字列をローカライズしたい場合、次のエラーが発生します (プロパティ ファイルの名前だけが変更されます)。
[2013-08-08T13:49:04.234-0500] [glassfish 4.0] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=24 _ThreadName=http-listener-1(5)] [timeMillis: 1375987744234] [levelValue: 900] [[
StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at javax.faces.component.UIComponent.findComponentResourceBundleLocaleMatch(UIComponent.java:1204)
at javax.faces.component.UIComponent.getResourceBundleMap(UIComponent.java:1007)
at sun.reflect.GeneratedMethodAccessor1226.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:140)
at com.sun.el.parser.AstValue.getValue(AstValue.java:204)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226)
at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227)
at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:115)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
...
JSF が標準の Java とは異なる方法でローカライズし、プロパティ ファイルが .xml ファイルに格納されるという記事(2012 年 8 月 24 日 03:50 PM からの投稿)を読んだresources/en/<library>/<component>.properties
ので、そこに配置mycomp.properties
すると、再びエラーが発生しました。
私のデフォルトのロケールは実際には「en_US」です。同じ結果で同様に試しました。
したがって、これは機能します
resources/lib/mycomp.xhtml
:resources/lib/mycomp.properties
これらは機能しません:
resources/lib/mycomp.xhtml
、resources/lib/mycomp_en.properties
resources/lib/mycomp.xhtml
、resources/en/lib/mycomp.properties
私は何を間違っていますか?