ICEfaces
  1. ICEfaces
  2. ICE-5362

valueChangeListener not found by ice:inputText

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: 2.0-Alpha2
    • Fix Version/s: 2.0-Alpha3, 2.0.0
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 2.0

      Description


      Bug report from Neil Griffin:

      <ice:inputText id="postalCode" partialSubmit="true" required="true" value="#{applicantModelBean.postalCode}"
      valueChangeListener="#{applicantFormBackingBean.postalCodeListener}" />

      But I'm getting a weird EL exception:

      12:05:41,856 ERROR [jsp:165] javax.el.ELException: /xhtml/applicantForm.xhtml: Property 'postalCodeListener' not found on type org.portletfaces.example.bean.ApplicantFormBackingBean
      at com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:91)
      at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:78)
      at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:179)
      at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
      at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:386)
      at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
      at org.icefaces.push.BridgeSetup.renderView(BridgeSetup.java:94)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
      at org.portletfaces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:166)
      at org.portletfaces.bridge.GenericFacesPortlet.doView(GenericFacesPortlet.java:194)
      at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
      at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)

      My backing bean postalCodeListener works fine with a vanilla JSF 2.0 h:inputText -- This problem only happens with ice:inputText when partialSubmit="true"

        Activity

        Hide
        Ted Goddard added a comment -

        This is a fairly fundamental bug. Do we have a current test case that Neil should modify for regression purposes?

        Show
        Ted Goddard added a comment - This is a fairly fundamental bug. Do we have a current test case that Neil should modify for regression purposes?
        Hide
        Ken Fyten added a comment -

        Mandeep, please create a simple test case for this issue to see if it still occurs with latest Glimmer trunk.

        Show
        Ken Fyten added a comment - Mandeep, please create a simple test case for this issue to see if it still occurs with latest Glimmer trunk.
        Hide
        Mandeep Hayher added a comment -

        Problem is reproducible on glimmer revision# 21289.
        Test application is available at '\repo\qa\trunk\Regression-Icefaces2\ICE-5362'

        Show
        Mandeep Hayher added a comment - Problem is reproducible on glimmer revision# 21289. Test application is available at '\repo\qa\trunk\Regression-Icefaces2\ ICE-5362 '
        Hide
        Mark Collette added a comment -

        This doesn't make sense that we're even accessing the valueChangeListener while rendering the component. As well, the exception of not being able to find postalCodeListener, which is a MethodExpression, is consistent with errors I've seen when EL is trying to access a MethodExpression as if it were a ValueExpression. In this case, it's probably trying to find a getPostalCodeListener getter accessor method.

        Perhaps some code is inadvertently treating it as a pass-through attribute, and trying to render out the valueChangeListener as if it were a ValueExpression?

        Oh wait, Since it's a UIInstructions component, and not the HtmlInputText, doing the rendering, I'd say that maybe the ice: namespace was omitted, or is somehow not being loaded/used by Facelets, so that it's not treating the ice:inputText tag as an actual component, but instead as some snippet of html. That would explain using the valueChangeListener at render time as a ValueExpression.

        Show
        Mark Collette added a comment - This doesn't make sense that we're even accessing the valueChangeListener while rendering the component. As well, the exception of not being able to find postalCodeListener, which is a MethodExpression, is consistent with errors I've seen when EL is trying to access a MethodExpression as if it were a ValueExpression. In this case, it's probably trying to find a getPostalCodeListener getter accessor method. Perhaps some code is inadvertently treating it as a pass-through attribute, and trying to render out the valueChangeListener as if it were a ValueExpression? Oh wait, Since it's a UIInstructions component, and not the HtmlInputText, doing the rendering, I'd say that maybe the ice: namespace was omitted, or is somehow not being loaded/used by Facelets, so that it's not treating the ice:inputText tag as an actual component, but instead as some snippet of html. That would explain using the valueChangeListener at render time as a ValueExpression.
        Hide
        Deryk Sinotte added a comment -

        When I include all the icefaces-compat* and supporting jars, it works fine, just like compat component showcase.  You can't use the ice: components without the compat stuff and the builds for the regression tests don't add them in. So for Tomcat, I added in:

        commons-beanutils.jar
        commons-digester.jar
        commons-collections.jar
        commons-logging.jar
        icefaces-compat.jar
        icefaces-comps-compat.jar

        Show
        Deryk Sinotte added a comment - When I include all the icefaces-compat* and supporting jars, it works fine, just like compat component showcase.  You can't use the ice: components without the compat stuff and the builds for the regression tests don't add them in. So for Tomcat, I added in: commons-beanutils.jar commons-digester.jar commons-collections.jar commons-logging.jar icefaces-compat.jar icefaces-comps-compat.jar

          People

          • Assignee:
            Deryk Sinotte
            Reporter:
            Ted Goddard
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: