Hoi,
Voor een speciale constructie waar ik programmatisch vanuit een backing bean een component toe voeg aan de JSF component tree, heb ik vanuit deze backing bean instantie mijn eigen managed naam nodig. Het component moet namelijk op deze bean een callback kunnen doen na een postback.
Het principe is dus een beetje een soort managed "this".
Momenteel gebruik ik hiervoor een beetje een work around: een custom VariableResolver die na de oorspronkelijke lookup de name via reflection in een annotated field zet. Dat werkt, maar het is een vervelende oplossing. Dit gebeurd namelijk elke keer als welke variable dan ook wordt opgevraagd, hoe vaak dat ook gebeurd.
In de SUN RI implementatie weet tenminste de BeanManager class wanneer een bean echt gemaakt wordt, maar deze class in non-pluggable. Ook de Servlet API schiet niet te help. Voor session scoped beans is wel HttpSessionBindingListener geschikt, maar voor request scoped beans is er alleen de algemene ServletRequestAttributeListener, waarin ik weer exact hetzelfde werk zou moeten doen als in de huidige VariableResolver (kijken of het object geïnteresseerd is in z'n naam en die hem dan geven).
Weet er iemand een betere oplossing?
Voor een speciale constructie waar ik programmatisch vanuit een backing bean een component toe voeg aan de JSF component tree, heb ik vanuit deze backing bean instantie mijn eigen managed naam nodig. Het component moet namelijk op deze bean een callback kunnen doen na een postback.
Het principe is dus een beetje een soort managed "this".
Momenteel gebruik ik hiervoor een beetje een work around: een custom VariableResolver die na de oorspronkelijke lookup de name via reflection in een annotated field zet. Dat werkt, maar het is een vervelende oplossing. Dit gebeurd namelijk elke keer als welke variable dan ook wordt opgevraagd, hoe vaak dat ook gebeurd.
In de SUN RI implementatie weet tenminste de BeanManager class wanneer een bean echt gemaakt wordt, maar deze class in non-pluggable. Ook de Servlet API schiet niet te help. Voor session scoped beans is wel HttpSessionBindingListener geschikt, maar voor request scoped beans is er alleen de algemene ServletRequestAttributeListener, waarin ik weer exact hetzelfde werk zou moeten doen als in de huidige VariableResolver (kijken of het object geïnteresseerd is in z'n naam en die hem dan geven).
Weet er iemand een betere oplossing?
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.