ICEfaces
  1. ICEfaces
  2. ICE-7423

MyFaces 2: compatibility with ACE

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1-Beta2
    • Fix Version/s: 3.0.RC1, 3.0
    • Labels:
      None
    • Environment:
      ICEfaces 2 ACE MyFaces 2
    • Assignee Priority:
      P1
    • Affects:
      Sample App./Tutorial, Compatibility/Configuration

      Description

      As part of the effort to provide full compatibility with MyFaces 2, we need to ensure that it works with all of our ACE components. Getting the ACE Comp Suite to fully run on the MyFaces 2 implementation is the goal.

        Issue Links

          Activity

          Deryk Sinotte created issue -
          Deryk Sinotte made changes -
          Field Original Value New Value
          Summary MyFaces 2: compatibility with ACE Component Suite demo MyFaces 2: compatibility with ACE
          Issue Type New Feature [ 2 ] Improvement [ 4 ]
          Salesforce Case []
          Component/s Framework [ 10013 ]
          Fix Version/s 2.1 [ 10241 ]
          Affects [Sample App./Tutorial, Compatibility/Configuration]
          Assignee Priority P1
          Assignee Deryk Sinotte [ deryk.sinotte ]
          Hide
          Deryk Sinotte added a comment -

          Linking to related JIRAs

          Show
          Deryk Sinotte added a comment - Linking to related JIRAs
          Deryk Sinotte made changes -
          Link This issue depends on ICE-7420 [ ICE-7420 ]
          Deryk Sinotte made changes -
          Link This issue depends on ICE-7417 [ ICE-7417 ]
          Hide
          Deryk Sinotte added a comment -

          The summary from QA when running the ACE Comp Suite with MyFaces on a fairly recent beta 2 build:

          Icefaces2.1.0 Beta2-build7
          App: Comp-Suite
          Server: Tomcat 7.0
          Browser: IE7
          JSF Library: Myfaces

          Buttons
          Checkbox Button

          • When clicking on 'Inspect Checkbox Value' a JS Error is seen (Exception thrown and not caught - See screenshot #1) This only happens when the checkbox is selected.
            Link Button
          • When clicking on 'Action Navigation' a JS Error is seen (Object expected - See Screenshot #2) Also, clicking on action navigation requires validation when it shouldn't.
            Push Button
          • When clicking 'Action Navigation' the form requires validation when it shouldn't.
          • Clicking on 'Listener Navigation' causes JS Error (Object expected - See screenshot #3)

          ConfirmationDialog
          Overview

          • Changing header / message dynamically causes the dialog to render another content pane with more buttons. (Same as Mojarra)
          • When changing width / height dynamically and trying to show the dialog it hides immediately. However, the next time it is shown the dialog opens fine with the changed value updated. (Same as Mojarra)

          ContextMenu
          Component

          • Clicking any of the menu items in the contextMenu causes a Server Internal Error. (Same as Mojarra)
            In a table
          • Clicking on either of the contextMenu menu items causes a 'User Session Expired' popup. When loading the page initially an exception is thrown in the tomcat log. (This exception has to do with the datatable, and it is thrown on every page with the dataTable - See 1.txt)
            Effect
          • Unable to swtich the effect, when trying to it immediately switches back to default ('Bounce'). Testing again I was able to switch the effect, however the effect wasn't changed when testing the contextMenu. When loading this page some exceptions are seen in the log (See 2.txt)

          Data Exporter
          Overview / Specify Columns

          • Unable to export anything, popup appears with text "Please wait while the file is generated..." and then a 'User Session Expired' popup occurs.

          Data Table
          ALL

          • Interacting with the dataTable on any of the pages causes the same exception as seen in '1.txt' file followed by a 'User Session Expired' popup.

          Dialog
          Overview

          • Submitting the input fields causes a JS error (_Lang.byId: reference a reference node or identifier must be provided - See screenshot #4)
            Draggable
          • Unable to select from the Opacity drop down list. When clicking on it it immediately hides.

          File Entry
          Overview / Basic / Validation

          • When submitting a file to be uploaded a JS error is seen ('source.id' is null or not an object - See screenshot #5)
            Overview
          • When clicking 'Clear & Submit' a JS error is seen (Invalid argument. - See screenshot #6)

          Menu
          Type

          • Unable to select a menu type. (Seems to be a reoccurring problem with buttons - similar exceptions seen as in '2.txt')
            Transition
          • Again unable to use the buttons (2.txt)

          Menu Bar
          Effects

          • Same button problem as above (2.txt)

          Notification Panel
          Overview

          • The notificationPanel renders half off the page (See screenshot #7)

          ProgressBar
          Polling

          • After selecting a image to upload and selecting upload, a 'User Session Expired' popup is seen. (Exception is thrown in server log - See 3.txt)
            Push
          • Clicking 'Start' button causes 'User Session Expired' popup (Similar exception as above: '3.txt')

          Slider
          Synchronous / Asynchronous / Asynchronous Input Slider

          • Changing clickableRail attribute to false dynamically doesn't change the behavior of the component (The rail is still click-able - Same as Mojarra)

          Tooltip
          Overview

          • I'm able to produce a JS error when interacting with the page in different ways. This error was generated multiple times. When this error appears and you continue to interact with the drop down menus it will appear every time you click on any of them. (Same as Mojarra)
          Show
          Deryk Sinotte added a comment - The summary from QA when running the ACE Comp Suite with MyFaces on a fairly recent beta 2 build: Icefaces2.1.0 Beta2-build7 App: Comp-Suite Server: Tomcat 7.0 Browser: IE7 JSF Library: Myfaces Buttons Checkbox Button When clicking on 'Inspect Checkbox Value' a JS Error is seen (Exception thrown and not caught - See screenshot #1) This only happens when the checkbox is selected. Link Button When clicking on 'Action Navigation' a JS Error is seen (Object expected - See Screenshot #2) Also, clicking on action navigation requires validation when it shouldn't. Push Button When clicking 'Action Navigation' the form requires validation when it shouldn't. Clicking on 'Listener Navigation' causes JS Error (Object expected - See screenshot #3) ConfirmationDialog Overview Changing header / message dynamically causes the dialog to render another content pane with more buttons. (Same as Mojarra) When changing width / height dynamically and trying to show the dialog it hides immediately. However, the next time it is shown the dialog opens fine with the changed value updated. (Same as Mojarra) ContextMenu Component Clicking any of the menu items in the contextMenu causes a Server Internal Error. (Same as Mojarra) In a table Clicking on either of the contextMenu menu items causes a 'User Session Expired' popup. When loading the page initially an exception is thrown in the tomcat log. (This exception has to do with the datatable, and it is thrown on every page with the dataTable - See 1.txt) Effect Unable to swtich the effect, when trying to it immediately switches back to default ('Bounce'). Testing again I was able to switch the effect, however the effect wasn't changed when testing the contextMenu. When loading this page some exceptions are seen in the log (See 2.txt) Data Exporter Overview / Specify Columns Unable to export anything, popup appears with text "Please wait while the file is generated..." and then a 'User Session Expired' popup occurs. Data Table ALL Interacting with the dataTable on any of the pages causes the same exception as seen in '1.txt' file followed by a 'User Session Expired' popup. Dialog Overview Submitting the input fields causes a JS error (_Lang.byId: reference a reference node or identifier must be provided - See screenshot #4) Draggable Unable to select from the Opacity drop down list. When clicking on it it immediately hides. File Entry Overview / Basic / Validation When submitting a file to be uploaded a JS error is seen ('source.id' is null or not an object - See screenshot #5) Overview When clicking 'Clear & Submit' a JS error is seen (Invalid argument. - See screenshot #6) Menu Type Unable to select a menu type. (Seems to be a reoccurring problem with buttons - similar exceptions seen as in '2.txt') Transition Again unable to use the buttons (2.txt) Menu Bar Effects Same button problem as above (2.txt) Notification Panel Overview The notificationPanel renders half off the page (See screenshot #7) ProgressBar Polling After selecting a image to upload and selecting upload, a 'User Session Expired' popup is seen. (Exception is thrown in server log - See 3.txt) Push Clicking 'Start' button causes 'User Session Expired' popup (Similar exception as above: '3.txt') Slider Synchronous / Asynchronous / Asynchronous Input Slider Changing clickableRail attribute to false dynamically doesn't change the behavior of the component (The rail is still click-able - Same as Mojarra) Tooltip Overview I'm able to produce a JS error when interacting with the page in different ways. This error was generated multiple times. When this error appears and you continue to interact with the drop down menus it will appear every time you click on any of them. (Same as Mojarra)
          Hide
          Deryk Sinotte added a comment -

          Before running ACE Comp Suite with MyFaces, I set the following context parameters:

          <context-param>
                 <param-name>org.icefaces.uniqueResourceURLs</param-name>
                 <param-value>false</param-value>
             </context-param>

          <context-param>
          <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
          <param-value>false</param-value>
          </context-param>

          These should be temporary until we get all the beans properly serialized and ICE-7417 fixed.

          I went through most of the Comp Suite myself with ICEfaces and, for the most part, did not see the same type or number of problems as QA reported. There were a couple of things in common (ie radio buttons).

          GENERAL

          • I really didn't see much in the way of JavaScript errors at all. Perhaps during the next QA run we could try a different browser just to see if there's some specific IE7 problems.

          • Examples that rely on progress bar behaviour (e.g. Progress Bar, File Entry) seem to be functional but I did get a common issue with several different examples (it's missing the app context "comp-suite":

          GET http://localhost:8080/resources/css/images/progressBarBackground.png 404 (Not Found)

          In override_styles.css, it appears that the URL needs to be adjusted to match the other images.
          /resources/css/images/progressBarBackground.png
          should be
          ../resources/css/images/progressBarBackground.png

          • Looks like there is a general issue with radio and checkbox groups where it reverts back to the default value after you click a different choice.

          • Various warningings related to layout panels:

          4-Nov-2011 1:54:22 PM org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase renderChildren
          WARNING: PanelGrid

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id1760589268_161e30a5][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id1760589268_161e311f] Location: /resources/examples/ace/progressbar/progressBar.xhtml at line 55 and column 51}

          has not enough children. Child count should be a multiple of the columns attribute.

          COMPONENT SPECIFIC

          ContextMenu

          • Logs one of these for each menu item on the page:

          WARNING: No Renderer found for component

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id1952249420_2dcf46b5][Class: org.icefaces.ace.component.contextmenu.ContextMenu,Id: j_id1952249420_2dcf46ab][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _1952249420_2dcf46f6]}

          (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/contextMenu/contextMenu.xhtml at line 48 and column 87

          Opened http://jira.icefaces.org/browse/ICE-7420 for this issue.

          DataTable

          • MyFaces throws UnsupportedOperationException when setDataModel is called so I temporarily did this:

          public void applyFilters() {
          try

          { setDataModel(null); }

          catch (UnsupportedOperationException uoe)

          { //MyFaces doesn't support this method and throws an UnsupportedOperationException }

          setFilteredData(null);
          filterValueChanged = true;
          }

          • General issues with filtering. Seeing these logged which probably is an app issue related to how components are being used/located outside of the datatable:

          4-Nov-2011 9:21:04 AM org.icefaces.ace.util.ComponentUtils findClientIds
          INFO: Cannot find component with identifier "listenerForm:eventLog" in view.

          4-Nov-2011 9:25:33 AM org.icefaces.ace.util.ComponentUtils findClientIds
          INFO: Cannot find component with identifier "selectForm:status" in view.

          • Edited row values are not being saved.

          Date Entry

          • Dates aren't always submitting automatically. Not sure if this is by design or not.

          Show
          Deryk Sinotte added a comment - Before running ACE Comp Suite with MyFaces, I set the following context parameters: <context-param>        <param-name>org.icefaces.uniqueResourceURLs</param-name>        <param-value>false</param-value>    </context-param> <context-param> <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name> <param-value>false</param-value> </context-param> These should be temporary until we get all the beans properly serialized and ICE-7417 fixed. I went through most of the Comp Suite myself with ICEfaces and, for the most part, did not see the same type or number of problems as QA reported. There were a couple of things in common (ie radio buttons). GENERAL • I really didn't see much in the way of JavaScript errors at all. Perhaps during the next QA run we could try a different browser just to see if there's some specific IE7 problems. • Examples that rely on progress bar behaviour (e.g. Progress Bar, File Entry) seem to be functional but I did get a common issue with several different examples (it's missing the app context "comp-suite": GET http://localhost:8080/resources/css/images/progressBarBackground.png 404 (Not Found) In override_styles.css, it appears that the URL needs to be adjusted to match the other images. /resources/css/images/progressBarBackground.png should be ../resources/css/images/progressBarBackground.png • Looks like there is a general issue with radio and checkbox groups where it reverts back to the default value after you click a different choice. • Various warningings related to layout panels: 4-Nov-2011 1:54:22 PM org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase renderChildren WARNING: PanelGrid {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id1760589268_161e30a5][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id1760589268_161e311f] Location: /resources/examples/ace/progressbar/progressBar.xhtml at line 55 and column 51} has not enough children. Child count should be a multiple of the columns attribute. COMPONENT SPECIFIC ContextMenu • Logs one of these for each menu item on the page: WARNING: No Renderer found for component {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id1952249420_2dcf46b5][Class: org.icefaces.ace.component.contextmenu.ContextMenu,Id: j_id1952249420_2dcf46ab][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _1952249420_2dcf46f6]} (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/contextMenu/contextMenu.xhtml at line 48 and column 87 Opened http://jira.icefaces.org/browse/ICE-7420 for this issue. DataTable • MyFaces throws UnsupportedOperationException when setDataModel is called so I temporarily did this: public void applyFilters() { try { setDataModel(null); } catch (UnsupportedOperationException uoe) { //MyFaces doesn't support this method and throws an UnsupportedOperationException } setFilteredData(null); filterValueChanged = true; } • General issues with filtering. Seeing these logged which probably is an app issue related to how components are being used/located outside of the datatable: 4-Nov-2011 9:21:04 AM org.icefaces.ace.util.ComponentUtils findClientIds INFO: Cannot find component with identifier "listenerForm:eventLog" in view. 4-Nov-2011 9:25:33 AM org.icefaces.ace.util.ComponentUtils findClientIds INFO: Cannot find component with identifier "selectForm:status" in view. • Edited row values are not being saved. Date Entry • Dates aren't always submitting automatically. Not sure if this is by design or not.
          Hide
          Deryk Sinotte added a comment -

          I should add that I occasionally get the following error which requires a redeploy of the app. It's doesn't seem easily reproducible with a given set of behaviours. It's having trouble calling PostConstruct annotation on some bean:

          Caused by: java.lang.NullPointerException
          at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:460)
          at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:146)
          at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
          at org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider.postConstruct(Tomcat7AnnotationLifecycleProvider.java:90)
          at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:211)
          at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:332)
          at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:295)
          at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
          at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:171)
          at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65)
          at org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:116)
          at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
          at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:171)
          at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
          at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
          at org.icefaces.samples.showcase.util.FacesUtils.getManagedBean(FacesUtils.java:81)
          at org.icefaces.samples.showcase.view.navigation.NavigationController.loadDefaultNavigation(NavigationController.java:137)
          at org.icefaces.samples.showcase.view.navigation.NavigationController.navigate(NavigationController.java:79)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.el.parser.AstValue.invoke(AstValue.java:262)

          Show
          Deryk Sinotte added a comment - I should add that I occasionally get the following error which requires a redeploy of the app. It's doesn't seem easily reproducible with a given set of behaviours. It's having trouble calling PostConstruct annotation on some bean: Caused by: java.lang.NullPointerException at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:460) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:146) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139) at org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider.postConstruct(Tomcat7AnnotationLifecycleProvider.java:90) at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:211) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:332) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:295) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:171) at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65) at org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:116) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:171) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) at org.icefaces.samples.showcase.util.FacesUtils.getManagedBean(FacesUtils.java:81) at org.icefaces.samples.showcase.view.navigation.NavigationController.loadDefaultNavigation(NavigationController.java:137) at org.icefaces.samples.showcase.view.navigation.NavigationController.navigate(NavigationController.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26296 Wed Nov 09 09:52:50 MST 2011 deryk.sinotte ICE-7423: change visibility of inner class fields to avoid reflection issues that lead to NullPointerExceptions
          Files Changed
          Commit graph MODIFY /icefaces2/trunk/icefaces/compat/components/src/main/java/com/icesoft/faces/component/inputrichtext/InputRichTextResourceHandler.java
          Hide
          Deryk Sinotte added a comment - - edited

          Went back through the entire ACE portion of comp-suite example and documented the relevant issues that aren't working with MyFaces and/or Mojarra:

              • MYFACES ONLY

          Buttons: Overview, Checkbox Buttons
          Only works properly on first click after that appears to be disabled and/or reverts to default. Could not use replace singleSubmit with f:ajax due to:

          javax.faces.view.facelets.TagException: /resources/examples/ace/button/button.xhtml @54,67 <f:ajax> Unable to attach <f:ajax> to non-ClientBehaviorHolder parent
             at com.sun.faces.facelets.tag.jsf.core.AjaxHandler.applyNested(AjaxHandler.java:297)

          Data Table: Overview, Filtering
          Filtering doesn't seem to work smoothly.

          Date Entry:
          All of the examples log this:

          WARNING: PanelGrid

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id606829530_796bae73][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id606829530_796bae6d] Location: /resources/examples/ace/date/dateentry.xhtml at line 41 and column 38}

          has not enough children. Child count should be a multiple of the columns attribute.

          Data Exporter: Row State
          Edited values are not saved. Also logs

          9-Nov-2011 2:42:44 PM org.icefaces.ace.util.ComponentUtils findClientIds
          INFO: Cannot find component with identifier "controls" in view.

          Data Table: Table Config
          SEVERE: Exiting serializeView - Could not serialize state: org.icefaces.ace.component.tableconfigpanel.TableConfigPanel
          java.io.NotSerializableException: org.icefaces.ace.component.tableconfigpanel.TableConfigPanel
          at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
          at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346)
          at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154)
          at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
          at java.util.HashMap.writeObject(HashMap.java:1001)

          Actually trying to configure the table causes a SessionExpired popup when closing the configuration panel.

          Date Entry: All
          The examples log this:

          WARNING: PanelGrid

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id606829530_796bae73][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id606829530_796bae6d] Location: /resources/examples/ace/date/dateentry.xhtml at line 41 and column 38}

          has not enough children. Child count should be a multiple of the columns attribute.

          File Entry: All
          The upload appears to work but the messages are not displayed. However the following is logged to the server console:

          WARNING: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
          These unhandled FacesMessages are:

          • The uploaded file "ICEfacesDevelopersGuide_EPS.pdf" was 507871 bytes in size.
          • The upload directory now contains 1 file(s) that total 507871 bytes in size.
          • 'example-form:file-entry' has successfully uploaded 'ICEfacesDevelopersGuide_EPS.pdf'

          Menu, Menu Bar: All
          Some kind of component/renderer mismatch is being detected

          WARNING: No Renderer found for component

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id142061704_313c4ab7][Class: org.icefaces.ace.component.menu.Menu,Id: j_id142061704_313c4ba8][Class: org.icefaces.ace.component.submenu.Submenu,Id: j_id142061704_313c4b9a][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _142061704_313c4bdb]}

          (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/menu/menu.xhtml at line 66 and column 65

          Panel:All
          Anything with a Menu type item on it logs the following:

          WARNING: Unsupported component-family/renderer-type: org.icefaces.ace.component.Menu/javax.faces.Button
          9-Nov-2011 4:05:47 PM javax.faces.component.UIComponentBase getRenderer
          WARNING: No Renderer found for component

          {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id959230454_4f316764][Class: org.icefaces.ace.component.panel.Panel,Id: j_id959230454_4f31678a][Class: org.icefaces.ace.component.menu.Menu,Id: j_id959230454_4f3167be][Class: org.icefaces.ace.component.submenu.Submenu,Id: j_id959230454_4f3167dc][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _959230454_4f31661b]}

          (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/panel/panelMenu.xhtml at line 46 and column 88

          Progress Bar: Push
          First attempt throws a Server Internal Error dialog and then provided the following stack trace:

          org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: java.lang.NullPointerException
          at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:106)
          at org.apache.myfaces.view.facelets.tag.jsf.core.EventHandler$Listener.processEvent(EventHandler.java:275)
          at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1371)
          at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43)
          at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2150)
          at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:548)
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1289)
          at javax.faces.component.UIViewRoot._processValidatorsDefault(UIViewRoot.java:1316)
          at javax.faces.component.UIViewRoot.access$500(UIViewRoot.java:74)
          at javax.faces.component.UIViewRoot$ProcessValidatorPhaseProcessor.process(UIViewRoot.java:1391)
          at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1272)
          at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:775)
          at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:38)
          at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
          at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
          at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)

          Tab Set: Proxy
          Content in tabs doesn't always render/update (second tab with validation)

              • MYFACES AND MOJARRA

          Drag Drop: Draggable
          Turning on Clone Helper mode particularly appears to do some strange things.

          Notification Panel: Overview
          The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon.

          Slider: All
          Setting options can cause slider rail to disappear.

          Context Menu: Effect
          Selecting radio buttons to change effects doesn't work.

          Data Exporter: Specify Columns, Paginator, Row Selector
          Cannot chose from the selectManyCheckbox component as choices are immediately reverted. Paginator position radio buttons don't work. Selection mode radio buttons don't work.

          Menu, Menu Bar: Type, Effects
          Radio buttons don't work.

              • MISC

          Seeing this reported in Chrome console many times:

          event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.

          Apparently it's a known issue and has been fixed as of http://blog.jquery.com/2011/11/03/jquery-1-7-released/.

          Show
          Deryk Sinotte added a comment - - edited Went back through the entire ACE portion of comp-suite example and documented the relevant issues that aren't working with MyFaces and/or Mojarra: MYFACES ONLY Buttons: Overview, Checkbox Buttons Only works properly on first click after that appears to be disabled and/or reverts to default. Could not use replace singleSubmit with f:ajax due to: javax.faces.view.facelets.TagException: /resources/examples/ace/button/button.xhtml @54,67 <f:ajax> Unable to attach <f:ajax> to non-ClientBehaviorHolder parent    at com.sun.faces.facelets.tag.jsf.core.AjaxHandler.applyNested(AjaxHandler.java:297) Data Table: Overview, Filtering Filtering doesn't seem to work smoothly. Date Entry: All of the examples log this: WARNING: PanelGrid {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id606829530_796bae73][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id606829530_796bae6d] Location: /resources/examples/ace/date/dateentry.xhtml at line 41 and column 38} has not enough children. Child count should be a multiple of the columns attribute. Data Exporter: Row State Edited values are not saved. Also logs 9-Nov-2011 2:42:44 PM org.icefaces.ace.util.ComponentUtils findClientIds INFO: Cannot find component with identifier "controls" in view. Data Table: Table Config SEVERE: Exiting serializeView - Could not serialize state: org.icefaces.ace.component.tableconfigpanel.TableConfigPanel java.io.NotSerializableException: org.icefaces.ace.component.tableconfigpanel.TableConfigPanel at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) at java.util.HashMap.writeObject(HashMap.java:1001) Actually trying to configure the table causes a SessionExpired popup when closing the configuration panel. Date Entry: All The examples log this: WARNING: PanelGrid {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id606829530_796bae73][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id606829530_796bae6d] Location: /resources/examples/ace/date/dateentry.xhtml at line 41 and column 38} has not enough children. Child count should be a multiple of the columns attribute. File Entry: All The upload appears to work but the messages are not displayed. However the following is logged to the server console: WARNING: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered. These unhandled FacesMessages are: The uploaded file "ICEfacesDevelopersGuide_EPS.pdf" was 507871 bytes in size. The upload directory now contains 1 file(s) that total 507871 bytes in size. 'example-form:file-entry' has successfully uploaded 'ICEfacesDevelopersGuide_EPS.pdf' Menu, Menu Bar: All Some kind of component/renderer mismatch is being detected WARNING: No Renderer found for component {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id142061704_313c4ab7][Class: org.icefaces.ace.component.menu.Menu,Id: j_id142061704_313c4ba8][Class: org.icefaces.ace.component.submenu.Submenu,Id: j_id142061704_313c4b9a][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _142061704_313c4bdb]} (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/menu/menu.xhtml at line 66 and column 65 Panel:All Anything with a Menu type item on it logs the following: WARNING: Unsupported component-family/renderer-type: org.icefaces.ace.component.Menu/javax.faces.Button 9-Nov-2011 4:05:47 PM javax.faces.component.UIComponentBase getRenderer WARNING: No Renderer found for component {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /showcase.xhtml][Class: javax.faces.component.html.HtmlBody,Id: _2068169349_6d256d7f][Class: javax.faces.component.html.HtmlForm,Id: j_id959230454_4f316764][Class: org.icefaces.ace.component.panel.Panel,Id: j_id959230454_4f31678a][Class: org.icefaces.ace.component.menu.Menu,Id: j_id959230454_4f3167be][Class: org.icefaces.ace.component.submenu.Submenu,Id: j_id959230454_4f3167dc][Class: org.icefaces.ace.component.menuitem.MenuItem,Id: _959230454_4f31661b]} (component-family=org.icefaces.ace.component.Menu, renderer-type=javax.faces.Button) created from: /resources/examples/ace/panel/panelMenu.xhtml at line 46 and column 88 Progress Bar: Push First attempt throws a Server Internal Error dialog and then provided the following stack trace: org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: java.lang.NullPointerException at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:106) at org.apache.myfaces.view.facelets.tag.jsf.core.EventHandler$Listener.processEvent(EventHandler.java:275) at javax.faces.component.UIComponent$EventListenerWrapper.processEvent(UIComponent.java:1371) at javax.faces.event.SystemEvent.processListener(SystemEvent.java:43) at org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2150) at org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:548) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1289) at javax.faces.component.UIViewRoot._processValidatorsDefault(UIViewRoot.java:1316) at javax.faces.component.UIViewRoot.access$500(UIViewRoot.java:74) at javax.faces.component.UIViewRoot$ProcessValidatorPhaseProcessor.process(UIViewRoot.java:1391) at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1272) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:775) at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:38) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) Tab Set: Proxy Content in tabs doesn't always render/update (second tab with validation) MYFACES AND MOJARRA Drag Drop: Draggable Turning on Clone Helper mode particularly appears to do some strange things. Notification Panel: Overview The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon. Slider: All Setting options can cause slider rail to disappear. SINGLE SUBMIT ( http://jira.icefaces.org/browse/ICE-7456 ) Context Menu: Effect Selecting radio buttons to change effects doesn't work. Data Exporter: Specify Columns, Paginator, Row Selector Cannot chose from the selectManyCheckbox component as choices are immediately reverted. Paginator position radio buttons don't work. Selection mode radio buttons don't work. Menu, Menu Bar: Type, Effects Radio buttons don't work. MISC Seeing this reported in Chrome console many times: event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future. Apparently it's a known issue and has been fixed as of http://blog.jquery.com/2011/11/03/jquery-1-7-released/ .
          Hide
          Ted Goddard added a comment -

          Testing the original QA reported issues, I see the following:

          checkbox not responding: confirmed

          link button JS error: working

          push button errors: working

          confirmation malformed output: seen with both myfaces and mojarra

          context menu effect: radio button not working

          data exporter: working

          dialog: JS error confirmed

          file entry: JS error confirmed

          menu: type selection due to radio button not working

          notification panel: working

          progress bar: working

          tooltip: slightly better with mojarra, but flakey in both

          The most general problem appears to be with checkbox/radiobutton, so I will look into that.

          Show
          Ted Goddard added a comment - Testing the original QA reported issues, I see the following: checkbox not responding: confirmed link button JS error: working push button errors: working confirmation malformed output: seen with both myfaces and mojarra context menu effect: radio button not working data exporter: working dialog: JS error confirmed file entry: JS error confirmed menu: type selection due to radio button not working notification panel: working progress bar: working tooltip: slightly better with mojarra, but flakey in both The most general problem appears to be with checkbox/radiobutton, so I will look into that.
          Hide
          Ted Goddard added a comment -

          Deryk has verified the fix for checkbox/radio and is implementing a fix within ICEfaces. It looks like this is ultimately a non-compliance aspect of MyFaces with Mojarra where the spec is not entirely clear (does "identifer" mean id or name ... to mojarra, it means both).

          The dialog console errors appear due to the following line in myfaces fixViewStates()
          this._Lang.arrForEach(this._updateForms, this._setVSTForm, 0, this);

          The details are obscured because their logging (and other features) uses "hitch" from dojo that allows method overriding in a particular way. When this fails, the stack trace is completely obscured.

          Show
          Ted Goddard added a comment - Deryk has verified the fix for checkbox/radio and is implementing a fix within ICEfaces. It looks like this is ultimately a non-compliance aspect of MyFaces with Mojarra where the spec is not entirely clear (does "identifer" mean id or name ... to mojarra, it means both). The dialog console errors appear due to the following line in myfaces fixViewStates() this._Lang.arrForEach(this._updateForms, this._setVSTForm, 0, this); The details are obscured because their logging (and other features) uses "hitch" from dojo that allows method overriding in a particular way. When this fails, the stack trace is completely obscured.
          Hide
          Mark Collette added a comment -

          Please re-test tabSetProxy. There was a regression that has now been fixed in grimlock.

          Show
          Mark Collette added a comment - Please re-test tabSetProxy. There was a regression that has now been fixed in grimlock.
          Hide
          Ted Goddard added a comment -

          The dialog in comp-suite is using the jquery "explode" effect, which is implemented using DOM cloning:

          el
          .clone()
          .appendTo('body')
          .wrap('<div></div>')
          .css(

          { position: 'absolute', visibility: 'visible', left: -j*(width/cells), top: -i*(height/rows) }

          )

          MyFaces obtains the surrounding form via getElementById rather than parent ascension, so is confused by temporary additional DOM nodes (it appears that jQuery cleans up after the event processing is complete, but this is not sufficient for myfaces since the form detection is occurring on that event call stack).

          The simple workaround is to use the "fade" effect rather than "explode".

          Show
          Ted Goddard added a comment - The dialog in comp-suite is using the jquery "explode" effect, which is implemented using DOM cloning: el .clone() .appendTo('body') .wrap('<div></div>') .css( { position: 'absolute', visibility: 'visible', left: -j*(width/cells), top: -i*(height/rows) } ) MyFaces obtains the surrounding form via getElementById rather than parent ascension, so is confused by temporary additional DOM nodes (it appears that jQuery cleans up after the event processing is complete, but this is not sufficient for myfaces since the form detection is occurring on that event call stack). The simple workaround is to use the "fade" effect rather than "explode".
          Hide
          Ted Goddard added a comment -

          fileEntry contains the following which will have potential problems with MyFaces:

          var context = {};
          context.sourceid = ""; //TODO Not sure how to get this
          context.formid = formElem.id;
          context.render = "@all";
          var context_execute = formElem.id; // Don't do "@all" or else FacesMessagePhaseListener doesn't work

          Adding

          context.source = event.currentTarget;

          appears to cure the JavaScript errors (Myfaces is looking for the source of the event that triggered the request) but does not restore the FacesMessages.

          Show
          Ted Goddard added a comment - fileEntry contains the following which will have potential problems with MyFaces: var context = {}; context.sourceid = ""; //TODO Not sure how to get this context.formid = formElem.id; context.render = "@all"; var context_execute = formElem.id; // Don't do "@all" or else FacesMessagePhaseListener doesn't work Adding context.source = event.currentTarget; appears to cure the JavaScript errors (Myfaces is looking for the source of the event that triggered the request) but does not restore the FacesMessages.
          Hide
          Ted Goddard added a comment -

          fileEntry POST is taking place with the same ViewState key each time, but MyFaces is expecting the updated key for each request. This is why the FacesMessages are not being updated: the POST is being applied to the wrong component tree.

          Show
          Ted Goddard added a comment - fileEntry POST is taking place with the same ViewState key each time, but MyFaces is expecting the updated key for each request. This is why the FacesMessages are not being updated: the POST is being applied to the wrong component tree.
          Hide
          Ted Goddard added a comment -

          Although we have

          Content-Disposition: form-data; name="javax.faces.partial.render"

          @all

          fileEntry fails the MyFaces isRenderAll() test.

          Show
          Ted Goddard added a comment - Although we have Content-Disposition: form-data; name="javax.faces.partial.render" @all fileEntry fails the MyFaces isRenderAll() test.
          Hide
          Ted Goddard added a comment -

          The requestHeaderMap is constructed before FileEntryPhaseListener is able to invoke getExternalContext().setRequest, causing MyFaces to not categorize file uploads as Ajax requests.

          Show
          Ted Goddard added a comment - The requestHeaderMap is constructed before FileEntryPhaseListener is able to invoke getExternalContext().setRequest, causing MyFaces to not categorize file uploads as Ajax requests.
          Hide
          Ted Goddard added a comment -

          Headers were successfully faked-out as follows and FacesMessages were observed:

          public class IceFacesContextFactory extends FacesContextFactory {
          ...

          public FacesContext getFacesContext(Object context,
          Object request,
          Object response,
          Lifecycle lifecycle) {
          HttpServletRequest servletRequest = (HttpServletRequest) request;
          if ((null != servletRequest.getContentType()) && servletRequest.getContentType().contains("multipart")) {
          final HttpServletRequest wrapped = servletRequest;
          servletRequest = new HttpServletRequestWrapper(wrapped) {
          public String getHeader(String name) {
          if (name.equals("Faces-Request"))

          { return "partial/ajax"; }

          return wrapped.getHeader(name);
          }
          };
          }
          return delegate.getFacesContext(context, servletRequest, response, lifecycle);
          }

          }

          registered

          <factory>
          <faces-context-factory>
          org.icefaces.impl.context.IceFacesContextFactory
          </faces-context-factory>
          ...

          Final fix requires better request type detection so that it does not interfere with ICEmobile. It may be best to implement a MultipartRequestListener so that FileEntry code could remain outside ICEfaces core.

          Show
          Ted Goddard added a comment - Headers were successfully faked-out as follows and FacesMessages were observed: public class IceFacesContextFactory extends FacesContextFactory { ... public FacesContext getFacesContext(Object context, Object request, Object response, Lifecycle lifecycle) { HttpServletRequest servletRequest = (HttpServletRequest) request; if ((null != servletRequest.getContentType()) && servletRequest.getContentType().contains("multipart")) { final HttpServletRequest wrapped = servletRequest; servletRequest = new HttpServletRequestWrapper(wrapped) { public String getHeader(String name) { if (name.equals("Faces-Request")) { return "partial/ajax"; } return wrapped.getHeader(name); } }; } return delegate.getFacesContext(context, servletRequest, response, lifecycle); } } registered <factory> <faces-context-factory> org.icefaces.impl.context.IceFacesContextFactory </faces-context-factory> ... Final fix requires better request type detection so that it does not interfere with ICEmobile. It may be best to implement a MultipartRequestListener so that FileEntry code could remain outside ICEfaces core.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26487 Mon Nov 21 10:22:20 MST 2011 deryk.sinotte ICE-7423: change effect from 'explode' to 'fade' to avoid the DOM cloning issue with MyFaces
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/dialog/dialog.xhtml
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26490 Mon Nov 21 13:17:39 MST 2011 ted.goddard set up FileEntry HttpServletRequestWrapper during FacesContext construction to support MyFaces (ICE-7423)
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/resources/META-INF/faces-config.xml
          Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/fileentry/FileEntryFormSubmit.java
          Commit graph ADD /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/IceFacesContextFactory.java
          Hide
          Ted Goddard added a comment -

          A fix for FileEntry using the above strategy has been checked in. Unfortunately it was not possible to confine the HttpServletRequestWrapper to views using FileEntry: the view determination logic is internal to JSF and is not available prior to the construction of the FacesContext. This should not be a problem, though, since the wrapped request only returns the "Faces-Request: partial/ajax" header. This will only take effect if the FileEntry component has been used in the user's session and the request is a multipart request.

          This particular change will not conflict with ICEmobile, but FileEntry likely will, since the wrapped request may be modified incompatibly with the multipart parsing already performed by Servlet 3.0. If this turns out to be the case, FileEntry can be modified to have minimal impact until it is used in the session. Mobile applications could then just disable the FileEntry component on mobile pages ensuring that the mobile session did not use FileEntry.

          Show
          Ted Goddard added a comment - A fix for FileEntry using the above strategy has been checked in. Unfortunately it was not possible to confine the HttpServletRequestWrapper to views using FileEntry: the view determination logic is internal to JSF and is not available prior to the construction of the FacesContext. This should not be a problem, though, since the wrapped request only returns the "Faces-Request: partial/ajax" header. This will only take effect if the FileEntry component has been used in the user's session and the request is a multipart request. This particular change will not conflict with ICEmobile, but FileEntry likely will, since the wrapped request may be modified incompatibly with the multipart parsing already performed by Servlet 3.0. If this turns out to be the case, FileEntry can be modified to have minimal impact until it is used in the session. Mobile applications could then just disable the FileEntry component on mobile pages ensuring that the mobile session did not use FileEntry.
          Hide
          Deryk Sinotte added a comment -

          MyFaces and ACE

          Reviewing current status after repository move/update to icefaces3 and recent code changes:

          FIXED

          Problem with radio buttons/checkbox groups and singleSubmit.
          Panel grid warnings regarding number of children.
          Data Exporter row state now saves edits.
          Progress Bar Ajax Push is now functional.
          Changed Dialog effect from 'explode' to 'fade' to avoid DOM cloning issues with MyFaces.

          MYFACES and MOJARRA

          ACE component menu items are displaying incorrectly (e.g. ace:accordion instead of Accordion) for almost all components.

          Confirmation Dialog: Changing the Header or Message values results in double buttons being rendered until next edit.

          Data Exporter: Specifying columns doesn't appear to work. Looks like Ant build may not include all necessary libraries.

          DataTable: Configuration panel cannot be serialized (http://jira.icefaces.org/browse/ICE-7477)

          Date Entry: Ajax Submit

          Appears functional but logs this to the server console the first time Ajax Submit is selected (depending on JSF implementation)

          21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 48 and column 52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior
          21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 64 and column 51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior

          21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml @48,52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior
          21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml @64,51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior

          Drag Drop: Turning on Clone Helper mode appears to do some strange things.

          Notification Panel: The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon.

          Slider: Asynchronous doesn't work. Setting options can cause slider rail to disappear.

          MYFACES ONLY

          Checkbox Button Appears fully functional but will occasionally throw a client-side exception when clicking Inspect Checkbox Value

          [window] Error [status: clientError code: undefined]: undefined bridge.js.jsf:1214
          cannot find enclosing form bridge.js.jsf:1235

          DataTable: Filtering doesn't work.

          Tab Set: Proxy - Content in tabs doesn't re-render/update properly when validation fails in second tab.

          Show
          Deryk Sinotte added a comment - MyFaces and ACE Reviewing current status after repository move/update to icefaces3 and recent code changes: FIXED Problem with radio buttons/checkbox groups and singleSubmit. Panel grid warnings regarding number of children. Data Exporter row state now saves edits. Progress Bar Ajax Push is now functional. Changed Dialog effect from 'explode' to 'fade' to avoid DOM cloning issues with MyFaces. MYFACES and MOJARRA ACE component menu items are displaying incorrectly (e.g. ace:accordion instead of Accordion) for almost all components. Confirmation Dialog: Changing the Header or Message values results in double buttons being rendered until next edit. Data Exporter: Specifying columns doesn't appear to work. Looks like Ant build may not include all necessary libraries. DataTable: Configuration panel cannot be serialized ( http://jira.icefaces.org/browse/ICE-7477 ) Date Entry: Ajax Submit Appears functional but logs this to the server console the first time Ajax Submit is selected (depending on JSF implementation) 21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 48 and column 52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 64 and column 51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml @48,52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml @64,51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior Drag Drop: Turning on Clone Helper mode appears to do some strange things. Notification Panel: The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon. Slider: Asynchronous doesn't work. Setting options can cause slider rail to disappear. MYFACES ONLY Checkbox Button Appears fully functional but will occasionally throw a client-side exception when clicking Inspect Checkbox Value [window] Error [status: clientError code: undefined] : undefined bridge.js.jsf:1214 cannot find enclosing form bridge.js.jsf:1235 DataTable: Filtering doesn't work. Tab Set: Proxy - Content in tabs doesn't re-render/update properly when validation fails in second tab.
          Hide
          Ted Goddard added a comment -

          MyFaces UIData getDataModel() and getValue() interact with each other very differently from mojarra, apparently complicating the filtering implementation. Additional investigation is required.

          Show
          Ted Goddard added a comment - MyFaces UIData getDataModel() and getValue() interact with each other very differently from mojarra, apparently complicating the filtering implementation. Additional investigation is required.
          Hide
          Ted Goddard added a comment -

          With MyFaces, DataTable.getValue() is only called at the beginning of the Lifecycle, and not after filtering has been performed.

          Implementing more of UIData similar to mojarra appears to work:

          @Override
          protected DataModel getDataModel() {

          • Object value = this.getValue();

          + if (this.model != null)

          { + return (model); + }

          +
          // If existing tree check for changes or return cached model
          if (hasTreeDataModel() || newTreeDataModel)

          { - if (newTreeDataModel) treeModel = new TreeDataModel((List)value); - newTreeDataModel = false; - return treeModel; + Object value = this.getValue(); + if (newTreeDataModel) treeModel = new TreeDataModel((List)value); + newTreeDataModel = false; + return treeModel; }
          • return super.getDataModel();
            + Object current = getValue();
            + if (current == null) { + setDataModel(new ListDataModel(Collections.EMPTY_LIST)); + }

            else if (current instanceof DataModel)

            { + setDataModel((DataModel) current); + }

            else if (current instanceof List)

            { + setDataModel(new ListDataModel((List) current)); + }

            else if (Object[].class.isAssignableFrom(current.getClass()))

            { + setDataModel(new ArrayDataModel((Object[]) current)); + }

            else if (current instanceof ResultSet)

            { + setDataModel(new ResultSetDataModel((ResultSet) current)); +// }

            else if (current instanceof Result)

            { +// setDataModel(new ResultDataModel((Result) current)); + }

            else

            { + setDataModel(new ScalarDataModel(current)); + }

            +
            + return model;
            }

          + private DataModel model;
          @Override
          + protected void setDataModel(DataModel dataModel)

          { + this.model = dataModel; + }

          +

          This may introduce other side effects, however.

          Show
          Ted Goddard added a comment - With MyFaces, DataTable.getValue() is only called at the beginning of the Lifecycle, and not after filtering has been performed. Implementing more of UIData similar to mojarra appears to work: @Override protected DataModel getDataModel() { Object value = this.getValue(); + if (this.model != null) { + return (model); + } + // If existing tree check for changes or return cached model if (hasTreeDataModel() || newTreeDataModel) { - if (newTreeDataModel) treeModel = new TreeDataModel((List)value); - newTreeDataModel = false; - return treeModel; + Object value = this.getValue(); + if (newTreeDataModel) treeModel = new TreeDataModel((List)value); + newTreeDataModel = false; + return treeModel; } return super.getDataModel(); + Object current = getValue(); + if (current == null) { + setDataModel(new ListDataModel(Collections.EMPTY_LIST)); + } else if (current instanceof DataModel) { + setDataModel((DataModel) current); + } else if (current instanceof List) { + setDataModel(new ListDataModel((List) current)); + } else if (Object[].class.isAssignableFrom(current.getClass())) { + setDataModel(new ArrayDataModel((Object[]) current)); + } else if (current instanceof ResultSet) { + setDataModel(new ResultSetDataModel((ResultSet) current)); +// } else if (current instanceof Result) { +// setDataModel(new ResultDataModel((Result) current)); + } else { + setDataModel(new ScalarDataModel(current)); + } + + return model; } + private DataModel model; @Override + protected void setDataModel(DataModel dataModel) { + this.model = dataModel; + } + This may introduce other side effects, however.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26501 Tue Nov 22 09:43:59 MST 2011 deryk.sinotte ICE-7423: add 'alt' attributes to h:graphicImage components to suppress warnings in MyFaces
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/accordionpanel/accordionPanel.xhtml
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26504 Tue Nov 22 10:30:26 MST 2011 ted.goddard wrapping h:messages with ID to reduce update propagation (ICE-7423)
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/tab/tabset-proxy.xhtml
          Hide
          Ted Goddard added a comment -

          The update problem on the tabSetProxy page is now fixed. The h:messages was within a <div> but no ID was present, so the update would propagate out when the messages were dynamically modified. MyFaces does not wrap messages with an ID by default. (This case is complicated by the JavaScript state of the tab component – other components can typically handle a larger-than-necessary DOM update.)

          Show
          Ted Goddard added a comment - The update problem on the tabSetProxy page is now fixed. The h:messages was within a <div> but no ID was present, so the update would propagate out when the messages were dynamically modified. MyFaces does not wrap messages with an ID by default. (This case is complicated by the JavaScript state of the tab component – other components can typically handle a larger-than-necessary DOM update.)
          Hide
          Deryk Sinotte added a comment -

          There is a ticket for the h:message(s) issue with ICEfaces open in both our system (ICE-6622) and the MyFaces system (https://issues.apache.org/jira/browse/MYFACES-3272) but it doesn't appear that they plan to do anything about it so we'll likely still need to do something ourselves.

          Show
          Deryk Sinotte added a comment - There is a ticket for the h:message(s) issue with ICEfaces open in both our system ( ICE-6622 ) and the MyFaces system ( https://issues.apache.org/jira/browse/MYFACES-3272 ) but it doesn't appear that they plan to do anything about it so we'll likely still need to do something ourselves.
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26518 Tue Nov 22 14:30:16 MST 2011 ted.goddard implement getDataModel directly (ICE-7423)
          Files Changed
          Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTable.java
          Hide
          Deryk Sinotte added a comment -

          Marking as resolved. It looks like the remaining issues are general issues with the application or other areas and not specifically related to MyFaces. The following outstanding issues occur with both MyFaces and Mojarra.

          Confirmation Dialog: Changing the Header or Message values results in double buttons being rendered until next edit.

          Data Exporter: Specifying columns doesn't appear to work. Looks like Ant build may not include all necessary libraries.

          Date Entry: Ajax Submit

          Appears functional but logs this to the server console the first time Ajax Submit is selected (depending on JSF implementation)

          21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 48 and column 52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior
          21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 64 and column 51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior

          21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml @48,52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior
          21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish
          SEVERE: /resources/examples/ace/date/dateajax.xhtml @64,51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior

          Drag Drop: Turning on Clone Helper mode appears to do some strange things.

          Notification Panel: The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon.

          Slider: Asynchronous doesn't work. Setting options can cause slider rail to disappear.

          Show
          Deryk Sinotte added a comment - Marking as resolved. It looks like the remaining issues are general issues with the application or other areas and not specifically related to MyFaces. The following outstanding issues occur with both MyFaces and Mojarra. Confirmation Dialog: Changing the Header or Message values results in double buttons being rendered until next edit. Data Exporter: Specifying columns doesn't appear to work. Looks like Ant build may not include all necessary libraries. Date Entry: Ajax Submit Appears functional but logs this to the server console the first time Ajax Submit is selected (depending on JSF implementation) 21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 48 and column 52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:06:05 AM org.apache.myfaces.view.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml at line 64 and column 51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml @48,52 update="selectedPop" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior 21-Nov-2011 11:07:52 AM com.sun.faces.facelets.tag.MetaRulesetImpl finish SEVERE: /resources/examples/ace/date/dateajax.xhtml @64,51 update="selectedIn" Unhandled by MetaTagHandler for type org.icefaces.ace.component.ajax.AjaxBehavior Drag Drop: Turning on Clone Helper mode appears to do some strange things. Notification Panel: The state of the button does not revert from "Hide" back to "Show" if you close the panel using the close icon. Slider: Asynchronous doesn't work. Setting options can cause slider rail to disappear.
          Deryk Sinotte made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Fix Version/s 3.0.RC1 [ 10300 ]
          Fix Version/s 3.0 [ 10241 ]
          Ken Fyten made changes -
          Fix Version/s 3.0 [ 10241 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

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

              Dates

              • Created:
                Updated:
                Resolved: