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.