J'aimerais savoir s'il est possible d'adapter le ExtendedBeanELResolver de la question nesting-jsf-expression-strings et de gérer cette expression EL imbriquées:Essayer de chaînes d'expression nid JSF
#{controllerBean.getBean('userProfileBean', component).street}*
où controllerBean.getBean renvoie le bean userProfileBean. Je vais avec le ExtenedBeanELResolver exception suivante:
SCHWERWIEGEND: javax.el.PropertyNotFoundException: /WEB-INF/templates/modification/userProfile.xhtml @35,196 value="#{controllerBean.getBean('userProfileBean', component).street}": Property 'getBean' not found on type com.something.ControllerBean
Si j'insère des crochets supplémentaires, il fonctionne, mais semble encore plus laid que maintenant:
#{(controllerBean.getBean('userProfileBean', component)).street}*
Est-il possible de le faire sans plus supports?
UPDATE 1 après la réponse de CycDemo:
problème étrange. Si je mets le
<h:inputText value="#{beanOne.getBean('data').title}" />
intérieur une forme rend la page, mais seulement jusqu'à ce que je soumettez le formulaire. Après cela, la même erreur sera affichée.
WARNUNG: /WEB-INF/templates/home.xhtml @61,66 value="#{beanOne.getBean('data').title}": Property 'getBean' not found on type com.something.BeanOne
Si je change à
<p:inputText value="#{beanOne.getBean('data').title}" />
la page ne sera même pas rendu au début. Je pense que le problème est que le JSF essaie d'appeler le setter lorsque le formulaire est soumis mais ne peut pas l'évaluer correctement.
Des idées?
MISE À JOUR 2
appearently JSF tente d'appeler getGetBean() parce qu'il est à la recherche d'une propriété sur BeanOne (j'ai eu un point de jonction dans Eclipse) qui est faux:
@ManagedBean
@ViewScoped
public class BeanOne {
private Object bean = new String("something");
public Object getBean(String name) {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().evaluateExpressionGet(context,
"#{" + name + "}",
Object.class);
}
public Object getGetBean() {
return bean; // <-- will be called by JSF
}
public void setGetBean(Object bean) {
this.bean = bean;
}
}
qui erreur que vous obtenez à nouveau? soumettez votre cause; – CycDemo