ICEfaces
  1. ICEfaces
  2. ICE-9452

ace:tableConfigPanel - PropertyNotWritableException thrown

    Details

    • Assignee Priority:
      P1
    • Salesforce Case Reference:

      Description

      With the EE 3.3.0 release the following error is thrown when changing the visibility of a column:

      WARNING: /resources/examples/ace/dataTable/dataTableConfigPanel.xhtml @52,83 headerText="#{msgs['ice.config.id']}": Missing Resource: 'resolverNotWriteable' for Locale English
      javax.el.PropertyNotWritableException: /resources/examples/ace/dataTable/dataTableConfigPanel.xhtml @52,83 headerText="#{msgs['ice.config.id']}": Missing Resource: 'resolverNotWriteable' for Locale English
      at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)
      at org.icefaces.ace.component.column.ColumnBase.setHeaderText(ColumnBase.java:814)
      at org.icefaces.ace.component.datatable.DataTableDecoder.decodeColumnName(DataTableDecoder.java:330)
      at org.icefaces.ace.component.datatable.DataTableDecoder.decodeColumnConfigurations(DataTableDecoder.java:317)
      at org.icefaces.ace.component.datatable.DataTableDecoder.decodeTableConfigurationRequest(DataTableDecoder.java:292)
      at org.icefaces.ace.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:80)
      at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:793)
      at org.icefaces.ace.component.datatable.DataTable.processDecodes(DataTable.java:440)
      at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:504)
      at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
      at org.icefaces.ace.component.datatable.DataTable.visitTree(DataTable.java:1502)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIForm.visitTree(UIForm.java:371)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
      at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:378)
      at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:253)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:280)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:280)
      at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:923)
      at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
      1. dataTableConfigPanel.xhtml
        4 kB
        Arran Mccullough
      2. messages.properties
        159 kB
        Arran Mccullough

        Activity

        Hide
        Arran Mccullough added a comment -

        The error is thrown by using the attached files with the Showcase demo. To reproduce, open the config panel, choose a column to be not visible, and save/close the panel. The error is then thrown.

        Show
        Arran Mccullough added a comment - The error is thrown by using the attached files with the Showcase demo. To reproduce, open the config panel, choose a column to be not visible, and save/close the panel. The error is then thrown.
        Hide
        Nils Lundquist added a comment -

        Right - the reason for both of these is that they are using ValueBindings that are not writeable.

        For ex:
        headerText="#

        {msgs['ice.config.id']}

        " - is accessing a message bundle - the headerText is editable by the TableConfigPanel and message bundles are read-only, hence the error.

        rendered="#

        {not backingBean.retroColumnHidden}

        " - is doing a 'not' calculation on a value when the expression is being evaluated - whenever an expression contains a calculation it is no longer writable.

        I'll look into the reason this changed between 3.3 and 3.2 - I suspect the TableConfigPanel may simply be being executed more often due to the changes to defaultRender/defaultExecute that occurred across many of our components.

        Show
        Nils Lundquist added a comment - Right - the reason for both of these is that they are using ValueBindings that are not writeable. For ex: headerText="# {msgs['ice.config.id']} " - is accessing a message bundle - the headerText is editable by the TableConfigPanel and message bundles are read-only, hence the error. rendered="# {not backingBean.retroColumnHidden} " - is doing a 'not' calculation on a value when the expression is being evaluated - whenever an expression contains a calculation it is no longer writable. I'll look into the reason this changed between 3.3 and 3.2 - I suspect the TableConfigPanel may simply be being executed more often due to the changes to defaultRender/defaultExecute that occurred across many of our components.
        Hide
        Nils Lundquist added a comment - - edited

        Are they sure this changed between 3.2 and 3.3? I think it may just be an submit scope change.

        Using the following non-writable value expressions, the tableConfigPanel example on showcase still works- as long as editing of column visibility and column names from the tableConfigPanel is disabled. As, of course, there is no way we can support editing of non-writeable value expressions.

        <ace:column id="id" headerText="#

        {'ID'.toLowerCase()}

        " rendered="#

        {true}

        ">

        Show
        Nils Lundquist added a comment - - edited Are they sure this changed between 3.2 and 3.3? I think it may just be an submit scope change. Using the following non-writable value expressions, the tableConfigPanel example on showcase still works- as long as editing of column visibility and column names from the tableConfigPanel is disabled. As, of course, there is no way we can support editing of non-writeable value expressions. <ace:column id="id" headerText="# {'ID'.toLowerCase()} " rendered="# {true} ">

          People

          • Assignee:
            Nils Lundquist
            Reporter:
            Arran Mccullough
          • Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: