This issue was originally discovered in Tomee10, but I was able to isolate it to mojarra+openwebbeans combination.
I have parent CompositeTest.xhtml that has showSomeText attribute. And I have nested component NestedCompositeTest.xhtml with showSomeText2 attribute. I need to pass showSomeText from parent to showSomeText2 of nested component.
Describe the bug
This issue was originally discovered in Tomee10, but I was able to isolate it to mojarra+openwebbeans combination. I have parent CompositeTest.xhtml that has
showSomeText
attribute. And I have nested component NestedCompositeTest.xhtml withshowSomeText2
attribute. I need to passshowSomeText
from parent toshowSomeText2
of nested component.CompositeTest.xhtml
NestedCompositeTest.xhtml
The issue is that the value of
showSomeText2
is always false. This assignment doesn't work:showSomeText2="#{cc.attrs.showSomeText}"
.It gets even more interesting when I use the same attribute name in parent and nested components. Then I get StackOverflowError.
I was able to debug it to the point when https://github.com/apache/openwebbeans/blob/openwebbeans-4.0.2/webbeans-el22/src/main/java/org/apache/webbeans/el22/WebBeansELResolver.java is trying to get value for
cc
bean and instead of CompositeTest.xhtml, it takes the one that belongs to nestedNestedCompositeTest.xhtml
.The same example works fine with Weld.
To Reproduce
Build war file from this repo and deploy it to tomcat: https://github.com/aleshi/mojarra_openwebbeans_issue Open: http://localhost:8080/jsf_cdi_and_ejb_war/test.jsf The page prints:
Expected behavior
Additional context Mojarra version: 4.0.8 Openwebbeans version: 4.0.2 Tomcat version: 10.1.31