You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by cj...@apache.org on 2009/12/14 16:59:21 UTC
svn commit: r890386 - in /myfaces/core/trunk:
api/src/main/java/javax/faces/component/UIComponentBase.java
impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
Author: cjhoward
Date: Mon Dec 14 15:59:20 2009
New Revision: 890386
URL: http://svn.apache.org/viewvc?rev=890386&view=rev
Log:
MYFACES-2458 - Ajax listeners not getting stored and called correctly.
Modified:
myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java?rev=890386&r1=890385&r2=890386&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java Mon Dec 14 15:59:20 2009
@@ -322,7 +322,15 @@
throw new NullPointerException("event");
try
{
-
+ if (event instanceof BehaviorEvent && event.getComponent() == this)
+ {
+ Behavior behavior = ((BehaviorEvent) event).getBehavior();
+ if (behavior instanceof ClientBehavior)
+ {
+ behavior.broadcast((BehaviorEvent) event);
+ }
+ }
+
if (_facesListeners == null)
return;
for (Iterator<FacesListener> it = _facesListeners.iterator(); it.hasNext();)
@@ -333,14 +341,6 @@
event.processListener(facesListener);
}
}
- if (event instanceof BehaviorEvent && event.getComponent() == this)
- {
- Behavior behavior = ((BehaviorEvent) event).getBehavior();
- if (behavior instanceof ClientBehavior)
- {
- behavior.broadcast((BehaviorEvent) event);
- }
- }
}
catch (Exception ex)
{
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java?rev=890386&r1=890385&r2=890386&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java Mon Dec 14 15:59:20 2009
@@ -24,6 +24,7 @@
import java.util.Map;
import javax.el.MethodExpression;
+import javax.faces.component.StateHolder;
import javax.faces.component.UIComponent;
import javax.faces.component.UniqueIdVendor;
import javax.faces.component.behavior.AjaxBehavior;
@@ -424,16 +425,18 @@
}
/**
- * Wraps a method expression in a AjaxBehaviorListener
- * TODO: This instance should be StateHolder or Serializable,
- * since ClientBehaviorBase implements PartialStateHolder
- *
+ * Wraps a method expression in a AjaxBehaviorListener
*/
- private final static class AjaxBehaviorListenerImpl implements
- AjaxBehaviorListener
+ public final static class AjaxBehaviorListenerImpl implements
+ AjaxBehaviorListener, StateHolder
{
- private final MethodExpression _expr;
-
+ private MethodExpression _expr;
+ private boolean _transient;
+
+ public AjaxBehaviorListenerImpl ()
+ {
+ }
+
public AjaxBehaviorListenerImpl(MethodExpression expr)
{
_expr = expr;
@@ -445,5 +448,24 @@
_expr.invoke(FacesContext.getCurrentInstance().getELContext(),
new Object[] { event });
}
+
+ public boolean isTransient()
+ {
+ return _transient;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+ _expr = (MethodExpression) state;
+ }
+
+ public Object saveState(FacesContext context) {
+ return _expr;
+ }
+
+ public void setTransient(boolean newTransientValue)
+ {
+ _transient = newTransientValue;
+ }
}
}