error running demo because of demo's PreferencesProxy EL getValue
-----------------------------------------------------------------
Key: TRINIDAD-1085
URL: https://issues.apache.org/jira/browse/TRINIDAD-1085
Project: MyFaces Trinidad
Issue Type: Bug
Reporter: Jeanne Waldman
This is in reference to the DEV list thread entitled
[TRINIDAD] The email demo and panelPageSkinDemo.jspx fail in the 1.2.8 proposed
release.
When running these demos, you see this error:
> May 16, 2008 4:42:12 PM javax.faces.webapp._ErrorPageWriter handleException
> SEVERE: An exception occurred
> javax.el.PropertyNotFoundException: Property 'skinFamily' not found on type
> java.lang.String
> at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
> at
> javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
> at javax.el.BeanELResolver.property(BeanELResolver.java:279)
> at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
> 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.AstValue.getValue(AstValue.java:114)
> at
> org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
> at
> org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:68)
> at
> org.apache.myfaces.trinidadinternal.context.RequestContextImpl.getSkinFamily(RequestContextImpl.java:230)
> at
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderingContext._initializeSkin(CoreRenderingContext.java:510)
> at
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderingContext.<init>(CoreRenderingContext.java:85)
> at
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit.encodeBegin(CoreRenderKit.java:481)
> at
> org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:166)
> at
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
> at
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:238)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:195)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:138)
> at
> org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.myfaces.trinidaddemo.webapp.RedirectFilter.doFilter(RedirectFilter.java:97)
> 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:286)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:595)
I see the code that is having an issue. It's only in the demo, and it seems
like EL code.
It's in PreferencesProxy.java. It errors trying to call
ve.getValue(context.getELContext()).
if (viewId.indexOf("/email/") >= 0)
preferencesExpression = "#{email.preferences}";
else if (viewId.indexOf("SkinDemo") >= 0)
preferencesExpression = "#{sessionScope}";
else if (viewId.indexOf("accessibilityProfileDemo") >= 0)
preferencesExpression = "#{accProfileDemo}";
if (preferencesExpression != null)
{
ValueExpression ve =
context.getApplication().getExpressionFactory().createValueExpression(preferencesExpression,
Object.class);
return ve.getValue(context.getELContext());
}
In trinidad-config.xml, we have this:
<skin-family>#{prefs.proxy.skinFamily}</skin-family>
If I change it to be
<skin-family>#{sessionScope.skinFamily}</skin-family>
Then this bit of code doesn't get called, and it works fine (well, as long as
all the other 'prefs.proxy' EL expressions that are used in trinidad-config.xml
are fixed up the same way).
In PreferencesProxy, and I see the code was recently changed from JSF1.1 to
JSF1.2, so that's the difference:
It was:
if (preferencesExpression != null)
{
ValueBinding vb =
context.getApplication().createValueBinding(preferencesExpression);
return vb.getValue(context);
}
and it is now:
if (preferencesExpression != null)
{
ValueExpression ve =
context.getApplication().getExpressionFactory().createValueExpression(preferencesExpression,
Object.class);
return ve.getValue(context.getELContext());
}
The error occurs in ve.getValue(context.getELContext());
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.