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.

Reply via email to