ClientBehaviorHolder interface should be tracked by myfaces-builder-plugin
metadata
-----------------------------------------------------------------------------------
Key: MYFACES-2455
URL: https://issues.apache.org/jira/browse/MYFACES-2455
Project: MyFaces Core
Issue Type: Task
Components: JSR-314
Affects Versions: 2.0.0-alpha
Reporter: Leonardo Uribe
Assignee: Leonardo Uribe
Actually we use something like this:
@JSFComponent
(name = "h:commandButton",
clazz = "javax.faces.component.html.HtmlCommandButton",template=true,
tagClass = "org.apache.myfaces.taglib.html.HtmlCommandButtonTag",
defaultRendererType = "javax.faces.Button",
implementz = "javax.faces.component.behavior.ClientBehaviorHolder",
defaultEventName = "action"
)
Look the part that says implementz. In this way we notice if the component is
implementing ClientBehaviorHolder interface and the method:
java.util.Collection<String> getEventNames()
is override properly in a similar way saveState and restoreState methods are
generated in 1.2 or earlier.
Note that in myfaces core we don't have a hierarchy of components that
implements ClientBehaviorHolder, so we have to deal in this method properly.
The typical case looks like this:
static private final java.util.Collection<String> CLIENT_EVENTS_LIST =
java.util.Collections.unmodifiableCollection(
java.util.Arrays.asList(
"change"
, "select"
, "click"
, "dblclick"
, "keydown"
, "keypress"
, "keyup"
, "mousedown"
, "mousemove"
, "mouseout"
, "mouseover"
, "mouseup"
, "blur"
, "focus"
, "action"
));
public java.util.Collection<String> getEventNames()
{
return CLIENT_EVENTS_LIST;
}
If the child component adds one behavior, a new Collection<String> should be
generated and the method should be override again.
There is another problem related, the method:
public String getDefaultEventName()
is override if defaultEventName is set.
In myfaces-builder-plugin we also have a small bug (or todo) with
defaultEventName. This attribute is merged for all child components, so in the
velocity template that generates component classes, this method is override
many times as "levels" in the hierarchy from the component that defines this
method. We have to keep track if the current component define this property or
not.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.