[ https://issues.apache.org/jira/browse/MYFACES-4585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17697039#comment-17697039 ]
Thomas Andraschko edited comment on MYFACES-4585 at 3/6/23 4:54 PM: -------------------------------------------------------------------- TBH checking that issue would cost me some hours, not sure if i will invest this. When AutoComplete#getItemLabel is called, #{converter} resolves to null, thats the problem. Just put a breakpoint there and watch "jakarta.faces.context.FacesContext.getCurrentInstance().getApplication().evaluateExpressionGet(jakarta.faces.context.FacesContext.getCurrentInstance(), "#{converter}", Object.class)" it seems to work fine when you remove in components/panel.xhtml the tst:panel wrapper. Seems the whole expression is lost, not just the type. If you can debug further, i can assist. was (Author: tandraschko): TBH checking that issue would cost me some hours, not sure if i will invest this. When AutoComplete#getItemLabel is called, #{converter} resolves to null, thats the problem. Just put a breakpoint there and watch "jakarta.faces.context.FacesContext.getCurrentInstance().getApplication().evaluateExpressionGet(jakarta.faces.context.FacesContext.getCurrentInstance(), "#{converter}", Object.class)" it seems to work fine when you remove in components/panel.xhtml the tst:panel wrapper. Seems the whole expression is lost, now just the type. If you can debug further, i can assist. > EL expression error: MethodNotFoundException due to wrong type > -------------------------------------------------------------- > > Key: MYFACES-4585 > URL: https://issues.apache.org/jira/browse/MYFACES-4585 > Project: MyFaces Core > Issue Type: Bug > Components: General > Affects Versions: 4.0.0 > Environment: primefaces-test project, jakarta branch > Reporter: Manuel K > Priority: Major > Attachments: image-2023-03-06-13-26-43-151.png > > > When an object is passed through several layers of components, the type > somehow gets lost and the expression evaluation uses the wrong type for a > method call. > Taglib component, where converter is of type > {_}java.faces.convert.Converter{_}: > {code:java} > <?xml version="1.0" encoding="UTF-8"?> > <ui:composition xmlns="http://www.w3.org/1999/xhtml" > xmlns:ui="http://xmlns.jcp.org/jsf/facelets" > xmlns:p="http://primefaces.org/ui" > xmlns:o="http://omnifaces.org/ui"> > <!--@elvariable id="value" type="java.lang.Object"--> > <!--@elvariable id="converter" type="java.faces.convert.Converter"--> > <!--@elvariable id="readonly" type="java.lang.Boolean"--> > <!--@elvariable id="readonlyValue" type="java.lang.String"--> > <o:tagAttribute name="value" > default=""/> > <o:tagAttribute name="converter" > default=""/> > <div> > <p:autoComplete id="input" > value="#{value}" > var="item" > converter="#{converter}" > completeMethod="#{converter.suggest}" > itemValue="#{item}" > itemLabel="#{converter.getDisplayValue(item)}"> > <ui:insert name="autoCompleteChildren"/> > </p:autoComplete> > </div> > </ui:composition> > {code} > The method call somehow assumes a String, so the following exception is > thrown: > {code:java} > jakarta.el.MethodNotFoundException: Method not found: class > java.lang.String.getDisplayValue(java.lang.String) {code} > I have created a reproducer here: > [https://github.com/mkomko/primefaces-test/tree/expression-error-method-not-found] > The AutoComplete component should work and render results as follows: > !image-2023-03-06-13-26-43-151.png! > It works using > {code:java} > mvn clean jetty:run -Pmojarra40{code} > but not using > {code:java} > mvn clean jetty:run -Pmyfaces40{code} > Thank you very much in advance for taking a look! -- This message was sent by Atlassian Jira (v8.20.10#820010)