Resource bundle values are not evaluated properly in java code --------------------------------------------------------------
Key: MYFACES-1858 URL: https://issues.apache.org/jira/browse/MYFACES-1858 Project: MyFaces Core Issue Type: Bug Affects Versions: 1.2.2 Reporter: Guy Bashan It seems like there is a general problem in resource bundle evaluation in java code. It seems like when ever loaded page is being reloaded (post back) the resource bundle in java code is not evaluated. I use two methods: 1) public static FacesContext getFacesContext() { return FacesContext.getCurrentInstance(); } private static Application getApplication() { ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder. getFactory(FactoryFinder.APPLICATION_FACTORY); return appFactory.getApplication(); } private static ValueBinding getValueBinding(String el) { return getApplication().createValueBinding(el); } public static Object getElValue(String el) { return getValueBinding(el).getValue(getFacesContext()); } then I do: getElValue("#{bundle['some.resource.value']}"); In this case, for example, when I want to fill dropdown with multi-laguage values and convert them to the proper data from the bundle I get this exception (Note: when comming to the page, it loads ok, it happens only on the postback call): javax.faces.FacesException: Exception while validating component with path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /cmp_new.jsp][Class: javax.faces.component.html.HtmlForm,Id: frmNewCampaign][Class: javax.faces.component.html.HtmlInputText,Id: po]} at javax.faces.component.UIInput.validate(UIInput.java:346) at javax.faces.component.UIInput.processValidators(UIInput.java:144) at javax.faces.component.UIForm.processValidators(UIForm.java:74) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:658) at javax.faces.component.UIViewRoot.access$101(UIViewRoot.java:43) at javax.faces.component.UIViewRoot$2.process(UIViewRoot.java:97) at javax.faces.component.UIViewRoot.process(UIViewRoot.java:205) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:93) at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.todacell.ui.view.filter.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:149) at com.todacell.ui.view.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:61) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerException at com.todacell.ui.view.util.ViewUtil.collectionToSelectItemList(ViewUtil.java:89) at com.todacell.ui.view.util.ViewUtil.collectionToSelectItemList(ViewUtil.java:98) at com.todacell.ui.view.bean.campaign.CampaignNewBean.<init>(CampaignNewBean.java:43) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider.newInstance(TomcatAnnotationLifecycleProvider.java:45) at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:81) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:196) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:162) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$301(FacesCompositeELResolver.java:46) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$4.invoke(FacesCompositeELResolver.java:108) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:104) at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:61) at org.apache.myfaces.custom.redirectTracker.RedirectTrackerVariableResolver.resolveVariable(RedirectTrackerVariableResolver.java:41) at org.apache.myfaces.custom.security.SecurityContextVariableResolver.resolveVariable(SecurityContextVariableResolver.java:45) at org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:93) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$301(FacesCompositeELResolver.java:46) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$4.invoke(FacesCompositeELResolver.java:108) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:104) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45) at org.apache.el.parser.AstValue.getTarget(AstValue.java:42) at org.apache.el.parser.AstValue.getType(AstValue.java:35) at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:174) at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:58) at org.apache.myfaces.shared_impl.renderkit._SharedRendererUtils.findUIOutputConverter(_SharedRendererUtils.java:58) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.findUIOutputConverter(RendererUtils.java:391) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedUIOutputValue(RendererUtils.java:743) at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.getConvertedValue(HtmlTextRendererBase.java:219) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:380) at javax.faces.component.UIInput.validate(UIInput.java:328) ... 30 more 2) The second method I use: public static Object getElValue(String el) { return getValueBinding(el).getValue(getFacesContext()); } This method doesnt throw exception, but it returns an empty string. For example, if I want to show error message from resource bundle, when posting page data, an empty error string returns. When putting simple string with no resource bundle, page loads an error shown ok. Note that all the jsp page has many calls to the same resource bundle, and the page itself is presented properly. Meaning the problem happens only when calling the resource from java code. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.