You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2016/07/31 10:11:06 UTC
svn commit: r1754647 - in /myfaces/tobago/trunk:
tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/
tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/t...
Author: weber
Date: Sun Jul 31 10:11:06 2016
New Revision: 1754647
URL: http://svn.apache.org/viewvc?rev=1754647&view=rev
Log:
TOBAGO-1574 - AJAX not working from change-facet-command
Modified:
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/SupportsAjaxBehaviorHolderRule.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/RenderUtils.java
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/SupportsAjaxBehaviorHolderRule.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/SupportsAjaxBehaviorHolderRule.java?rev=1754647&r1=1754646&r2=1754647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/SupportsAjaxBehaviorHolderRule.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/SupportsAjaxBehaviorHolderRule.java Sun Jul 31 10:11:06 2016
@@ -21,6 +21,8 @@ package org.apache.myfaces.tobago.facele
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.SupportsAjaxBehaviorHolder;
+import org.apache.myfaces.tobago.component.SupportsRenderedPartially;
+import org.apache.myfaces.tobago.util.ComponentUtils;
import javax.faces.component.behavior.AjaxBehavior;
import javax.faces.component.behavior.ClientBehavior;
@@ -38,12 +40,13 @@ public class SupportsAjaxBehaviorHolderR
@Override
public Metadata applyRule(final String name, final TagAttribute attribute, final MetadataTarget metadataTarget) {
- if (metadataTarget.isTargetInstanceOf(SupportsAjaxBehaviorHolder.class)) {
+ if (metadataTarget.isTargetInstanceOf(SupportsAjaxBehaviorHolder.class)
+ || metadataTarget.isTargetInstanceOf(SupportsRenderedPartially.class)) {
Attributes a = Attributes.valueOfFailsafe(name);
if (a != null) {
switch (a) {
- case renderPartially:
case renderedPartially:
+ case renderPartially:
case executePartially:
return new SupportsAjaxBehaviorHolderMapper(attribute, a);
default:
@@ -66,23 +69,28 @@ public class SupportsAjaxBehaviorHolderR
@Override
public void applyMetadata(final FaceletContext faceletContext, final Object instance) {
- final SupportsAjaxBehaviorHolder ajaxBehaviorHolder = (SupportsAjaxBehaviorHolder) instance;
-
- AjaxBehavior ajaxBehavior = findAjaxBehavior(ajaxBehaviorHolder, faceletContext);
-
+ AjaxBehavior ajaxBehavior = null;
+ if (instance instanceof SupportsAjaxBehaviorHolder) {
+ final SupportsAjaxBehaviorHolder ajaxBehaviorHolder = (SupportsAjaxBehaviorHolder) instance;
+ ajaxBehavior = findAjaxBehavior(ajaxBehaviorHolder, faceletContext);
+ }
switch (tobagoAttribute) {
case renderedPartially:
-// if (tagAttribute.isLiteral()) {
-// final String[] components = ComponentUtils.splitList(tagAttribute.getValue());
-// } else {
-// }
-// break;
+ if (ajaxBehavior == null && instance instanceof SupportsRenderedPartially) {
+ SupportsRenderedPartially supportsRenderedPartially = (SupportsRenderedPartially) instance;
+ supportsRenderedPartially.setRenderedPartially(ComponentUtils.splitList(tagAttribute.getValue()));
+ break;
+ }
case renderPartially:
- ajaxBehavior.setValueExpression("render", tagAttribute.getValueExpression(faceletContext, Object.class));
+ if (ajaxBehavior != null) {
+ ajaxBehavior.setValueExpression("render", tagAttribute.getValueExpression(faceletContext, Object.class));
+ }
break;
case executePartially:
- ajaxBehavior.setValueExpression("execute", tagAttribute.getValueExpression(faceletContext, Object.class));
+ if (ajaxBehavior != null) {
+ ajaxBehavior.setValueExpression("execute", tagAttribute.getValueExpression(faceletContext, Object.class));
+ }
break;
default:
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java?rev=1754647&r1=1754646&r2=1754647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/facelets/TobagoComponentHandler.java Sun Jul 31 10:11:06 2016
@@ -23,6 +23,7 @@ import org.apache.myfaces.tobago.compone
import org.apache.myfaces.tobago.component.OnComponentCreated;
import org.apache.myfaces.tobago.component.OnComponentPopulated;
import org.apache.myfaces.tobago.component.SupportsAjaxBehaviorHolder;
+import org.apache.myfaces.tobago.component.SupportsRenderedPartially;
import org.apache.myfaces.tobago.component.Visual;
import org.apache.myfaces.tobago.config.TobagoConfig;
import org.apache.myfaces.tobago.event.SheetStateChangeSource;
@@ -71,7 +72,8 @@ public class TobagoComponentHandler exte
if (InputSuggest.class.isAssignableFrom(aClass)) {
metaRuleset.addRule(SuggestMethodRule.INSTANCE);
}
- if (SupportsAjaxBehaviorHolder.class.isAssignableFrom(aClass)) {
+ if (SupportsAjaxBehaviorHolder.class.isAssignableFrom(aClass)
+ || SupportsRenderedPartially.class.isAssignableFrom(aClass)) {
metaRuleset.addRule(SupportsAjaxBehaviorHolderRule.INSTANCE);
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java?rev=1754647&r1=1754646&r2=1754647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java Sun Jul 31 10:11:06 2016
@@ -34,7 +34,6 @@ import javax.el.MethodExpression;
import javax.faces.component.UICommand;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
-import javax.faces.component.behavior.ClientBehaviorHolder;
import javax.faces.context.FacesContext;
import javax.faces.event.FacesEvent;
import javax.faces.event.PhaseId;
@@ -45,8 +44,7 @@ import java.util.List;
public abstract class AbstractUICommand
extends UICommand
- implements SupportsRenderedPartially, SupportsAjaxBehaviorHolder, SupportsAccessKey, OnComponentPopulated, Visual,
- ClientBehaviorHolder {
+ implements SupportsRenderedPartially, SupportsAjaxBehaviorHolder, SupportsAccessKey, OnComponentPopulated, Visual {
private static final Logger LOG = LoggerFactory.getLogger(AbstractUICommand.class);
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/RenderUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/RenderUtils.java?rev=1754647&r1=1754646&r2=1754647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/RenderUtils.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/util/RenderUtils.java Sun Jul 31 10:11:06 2016
@@ -278,6 +278,7 @@ public final class RenderUtils {
clientBehaviors.addAll(behaviorsMap.get(facetName));
}
// if facet name != "click" and the behaviorCommands are added as default they must moved to the correct map
+ // "click" is default behavior of tc:command which should be the facet
if (clientBehaviors.isEmpty() && behaviorsMap.get("click") != null) {
final List<ClientBehavior> clickBehaviors = behaviorsMap.get("click");
for (ClientBehavior behavior : clickBehaviors) {
@@ -289,6 +290,10 @@ public final class RenderUtils {
behaviors.put(facetName, clientBehaviors);
}
}
+ // add f:ajax behaviors, note:facet behaviors overrules f:ajax
+ if (behaviors.isEmpty()) {
+ behaviors.putAll(holder.getClientBehaviors());
+ }
}
for (Map.Entry<String, List<ClientBehavior>> behavior : behaviors.entrySet()) {
final String key = behavior.getKey();
@@ -318,12 +323,11 @@ public final class RenderUtils {
}
final ClientBehaviorHolder clientBehaviorHolder;
- if ("click".equals(behaviorEventName)) {
- clientBehaviorHolder = (ClientBehaviorHolder) component;
- } else if (component.getFacet(behaviorEventName) instanceof ClientBehaviorHolder) {
+
+ if (component.getFacet(behaviorEventName) instanceof ClientBehaviorHolder) {
clientBehaviorHolder = (ClientBehaviorHolder) component.getFacet(behaviorEventName);
} else {
- return;
+ clientBehaviorHolder = (ClientBehaviorHolder) component;
}
final Map<String, List<ClientBehavior>> clientBehaviors = clientBehaviorHolder.getClientBehaviors();
if (clientBehaviors != null && !clientBehaviors.isEmpty()) {