Details
-
Type:
Improvement
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.1-Beta2
-
Component/s: ACE-Components, Framework, Sample Apps
-
Labels:None
-
Environment:ICEfaces 2 ACE MyFaces 2
-
Assignee Priority:P1
-
Affects:Sample App./Tutorial, Compatibility/Configuration
Description
Issue Links
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
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)
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
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
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.
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)
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-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/.
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.
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.
Please re-test tabSetProxy. There was a regression that has now been fixed in grimlock.
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(
)
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".
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.
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.
Although we have
Content-Disposition: form-data; name="javax.faces.partial.render"
@all
fileEntry fails the MyFaces isRenderAll() test.
The requestHeaderMap is constructed before FileEntryPhaseListener is able to invoke getExternalContext().setRequest, causing MyFaces to not categorize file uploads as Ajax requests.
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 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.
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.
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.
MyFaces UIData getDataModel() and getValue() interact with each other very differently from mojarra, apparently complicating the filtering implementation. Additional investigation is required.
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)
- 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 may introduce other side effects, however.
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.)
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.
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.
Linking to related JIRAs