You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by my...@arcor.de on 2010/07/19 10:22:52 UTC
ExtVal: PropertyNotFoundException for nested composite components
Hi at all,
I found a bug which I think is a jsf problem rather than for ExtVal, but since the code refers to https://issues.apache.org/jira/browse/EXTVAL-102 I would like you to check it too:
Exception is javax.el.PropertyNotFoundException: /resources/parts/partbase.xhtml @23,53 value="#{cc.attrs.child.value}": Target Unreachable, 'child' returned null
which occurs in org.apache.myfaces.extensions.validator.core.el.DefaultELHelper
private void inspectTarget(ValueExpression valueExpression, ELContext elContext, boolean inspectCompositeComponent)
{
try
{
valueExpression.setValue(elContext, null);
}
catch (Throwable t)
{
if(inspectCompositeComponent)
{
throw new IllegalStateException(
"error at binding: " + valueExpression.getExpressionString() +
" -- an el-resolver error occurred! maybe you used an invalid binding.", t);
}
}
}
after runnign throug ExtVal-102 code:
public PropertyDetails getPropertyDetailsOfValueBinding(UIComponent uiComponent)
{
...
//see EXTVAL-102
if (elResolver.getBaseObject() instanceof CompositeComponentExpressionHolder)
{
ValueExpression newValueExpression = ((CompositeComponentExpressionHolder) elResolver.getBaseObject())
.getExpression(elResolver.getProperty());
if (newValueExpression != null)
{
elResolver = createWrappedELContext(facesContext);
inspectTarget(newValueExpression,
ExtValELResolver.createContextWrapper(
facesContext.getELContext(), elResolver), false); --> Exception!
}
}
I provided a simple war project containing templates and simple classes (bean --> parent class --> child class with string value):
http://www.humyo.de/10453303/TestProject.war?a=W0dLMKgfIko
The problem seems to come from com.sun.faces.component.CompositeComponentStackManager.findCompositeComponentUsingLocation(FacesContext, Location), where the location of composite components fails for my example.
Thanks.
--
E-Cards: Schon fertig für die ganz Eiligen oder individuell zum Selbstgestalten - für jeden Anlass gibt´s die richtige E-Card auf arcor.de.
http://www.arcor.de/rd/footer.ecard
Re: ExtVal: PropertyNotFoundException for nested composite components
Posted by Gerhard Petracek <ge...@gmail.com>.
hi tom,
extval tries to initialize input components before they get rendered. so you
see the exception quite early.
i haven't analyzed the details of the example - however, if you deactivate
extval (via vm parameter), you will see the same issue at the next postback.
so you are right - it is >not< an issue of extval.
regards,
gerhard
http://www.irian.at
Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German
Professional Support for Apache MyFaces
2010/7/19 Gerhard Petracek <ge...@gmail.com>
> hi tom,
>
> i'll have a look at the example.
>
> regards,
> gerhard
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
>
>
> 2010/7/19 <my...@arcor.de>
>
> Hi at all,
>>
>> I found a bug which I think is a jsf problem rather than for ExtVal, but
>> since the code refers to https://issues.apache.org/jira/browse/EXTVAL-102I would like you to check it too:
>>
>> Exception is javax.el.PropertyNotFoundException:
>> /resources/parts/partbase.xhtml @23,53 value="#{cc.attrs.child.value}":
>> Target Unreachable, 'child' returned null
>>
>> which occurs in
>> org.apache.myfaces.extensions.validator.core.el.DefaultELHelper
>>
>> private void inspectTarget(ValueExpression valueExpression, ELContext
>> elContext, boolean inspectCompositeComponent)
>> {
>> try
>> {
>> valueExpression.setValue(elContext, null);
>> }
>> catch (Throwable t)
>> {
>> if(inspectCompositeComponent)
>> {
>> throw new IllegalStateException(
>> "error at binding: " +
>> valueExpression.getExpressionString() +
>> " -- an el-resolver error occurred! maybe
>> you used an invalid binding.", t);
>> }
>> }
>> }
>>
>> after runnign throug ExtVal-102 code:
>>
>> public PropertyDetails getPropertyDetailsOfValueBinding(UIComponent
>> uiComponent)
>> {
>> ...
>>
>> //see EXTVAL-102
>> if (elResolver.getBaseObject() instanceof
>> CompositeComponentExpressionHolder)
>> {
>> ValueExpression newValueExpression =
>> ((CompositeComponentExpressionHolder) elResolver.getBaseObject())
>> .getExpression(elResolver.getProperty());
>>
>> if (newValueExpression != null)
>> {
>> elResolver = createWrappedELContext(facesContext);
>> inspectTarget(newValueExpression,
>> ExtValELResolver.createContextWrapper(
>> facesContext.getELContext(), elResolver),
>> false); --> Exception!
>> }
>> }
>>
>>
>> I provided a simple war project containing templates and simple classes
>> (bean --> parent class --> child class with string value):
>> http://www.humyo.de/10453303/TestProject.war?a=W0dLMKgfIko
>>
>> The problem seems to come from
>> com.sun.faces.component.CompositeComponentStackManager.findCompositeComponentUsingLocation(FacesContext,
>> Location), where the location of composite components fails for my example.
>>
>> Thanks.
>>
>> --
>> E-Cards: Schon fertig für die ganz Eiligen oder individuell zum
>> Selbstgestalten - für jeden Anlass gibt´s die richtige E-Card auf
>> arcor.de.
>> http://www.arcor.de/rd/footer.ecard
>>
>
>
Re: ExtVal: PropertyNotFoundException for nested composite components
Posted by Gerhard Petracek <ge...@gmail.com>.
hi tom,
i'll have a look at the example.
regards,
gerhard
http://www.irian.at
Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German
Professional Support for Apache MyFaces
2010/7/19 <my...@arcor.de>
> Hi at all,
>
> I found a bug which I think is a jsf problem rather than for ExtVal, but
> since the code refers to https://issues.apache.org/jira/browse/EXTVAL-102I would like you to check it too:
>
> Exception is javax.el.PropertyNotFoundException:
> /resources/parts/partbase.xhtml @23,53 value="#{cc.attrs.child.value}":
> Target Unreachable, 'child' returned null
>
> which occurs in
> org.apache.myfaces.extensions.validator.core.el.DefaultELHelper
>
> private void inspectTarget(ValueExpression valueExpression, ELContext
> elContext, boolean inspectCompositeComponent)
> {
> try
> {
> valueExpression.setValue(elContext, null);
> }
> catch (Throwable t)
> {
> if(inspectCompositeComponent)
> {
> throw new IllegalStateException(
> "error at binding: " +
> valueExpression.getExpressionString() +
> " -- an el-resolver error occurred! maybe
> you used an invalid binding.", t);
> }
> }
> }
>
> after runnign throug ExtVal-102 code:
>
> public PropertyDetails getPropertyDetailsOfValueBinding(UIComponent
> uiComponent)
> {
> ...
>
> //see EXTVAL-102
> if (elResolver.getBaseObject() instanceof
> CompositeComponentExpressionHolder)
> {
> ValueExpression newValueExpression =
> ((CompositeComponentExpressionHolder) elResolver.getBaseObject())
> .getExpression(elResolver.getProperty());
>
> if (newValueExpression != null)
> {
> elResolver = createWrappedELContext(facesContext);
> inspectTarget(newValueExpression,
> ExtValELResolver.createContextWrapper(
> facesContext.getELContext(), elResolver),
> false); --> Exception!
> }
> }
>
>
> I provided a simple war project containing templates and simple classes
> (bean --> parent class --> child class with string value):
> http://www.humyo.de/10453303/TestProject.war?a=W0dLMKgfIko
>
> The problem seems to come from
> com.sun.faces.component.CompositeComponentStackManager.findCompositeComponentUsingLocation(FacesContext,
> Location), where the location of composite components fails for my example.
>
> Thanks.
>
> --
> E-Cards: Schon fertig für die ganz Eiligen oder individuell zum
> Selbstgestalten - für jeden Anlass gibt´s die richtige E-Card auf arcor.de
> .
> http://www.arcor.de/rd/footer.ecard
>