You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-user@incubator.apache.org by Chris Hansen <ch...@overstock.com> on 2006/12/22 20:34:49 UTC
Action attribute of tr:commandNavigationItem ignored
In the following code for a navigation menu, everything works except the
action attribute of the tr:commandNavigationItem tag:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:tr="http://myfaces.apache.org/trinidad">
<tr:form>
<tr:navigationPane var="menuItem" value="#{menuModel.model}"
hint="list"
inlineStyle="margin-left:-20px;margin-top:-15px;">
<!-- For some reason text will not be displayed if there is not
another element in the tr:navigationPane besides the nodeStamp facet-->
<tr:group></tr:group>
<f:facet name="nodeStamp">
<tr:commandNavigationItem action="#{menuItem.action}"
disabled="#{menuItem.disabled}" text="#{menuItem.label}"
destination="#{menuItem.destination}" rendered="#{menuItem.shown}"
selected="#{menuItem.viewId == view.viewId}" immediate="true" />
</f:facet>
</tr:navigationPane>
</tr:form>
</ui:composition>
The getter for menuItem.action is never called, while all of the other
getters are being called (menuItem.destination, menuItem.label, etc.). I
tried removing the destination=... attribute with no success.
What is the key to using an action on a commandNavigationItem, and what am I
missing?
Thanks.
--
Chris Hansen
Overstock.com
Internal Applications
6350 South 3000 East
Salt Lake City, Utah 84121
Toll Free: 800.The.Big.O (843-2446)
www.overstock.com
Re: Action attribute of tr:commandNavigationItem ignored
Posted by Chris Hansen <ch...@overstock.com>.
I tried that as well. The method "public String action()" in menuItem was
never called when I used it a tr:commandNavigationItem tag as specified in a
previous message. I even tried removing destination=... in combination.
Any ideas? Thank you for your help.
--
Chris Hansen
Overstock.com
Internal Applications
6350 South 3000 East
Salt Lake City, Utah 84121
Toll Free: 800.The.Big.O (843-2446)
www.overstock.com
On 12/26/06 10:43 AM, "Adam Winer" <aw...@gmail.com> wrote:
> You cannot use a getter for "action". That isn't how it works.
> The method *is* the action. You cannot do:
>
> public MethodBinding getAction()
>
> ... you must do:
>
> public String action()
>
> ... which could be implemented along the lines of:
>
> public String action()
> {
> MethodBinding action = getAction();
> if (action == null) return null;
>
> FacesContext context = FacesContext.getCurrentInstance();
> Object retVal = action.invoke(context, null);
> if (retVal == null)
> return null;
> return retVal.toString();
> }
>
> -- Adam
>
>
> On 12/26/06, Chris Hansen <ch...@overstock.com> wrote:
>> I should have specified, but the getter for menuItem.action returns a
>> javax.faces.el.MethodBinding . Are you saying that no action can be bound to
>> a getter that returns a MethodBinding?
>>
>> --
>> Chris Hansen
>> Overstock.com
>> Internal Applications
>> 6350 South 3000 East
>> Salt Lake City, Utah 84121
>> Toll Free: 800.The.Big.O (843-2446)
>> www.overstock.com
>>
>>
>> On 12/22/06 6:22 PM, "Adam Winer" <aw...@gmail.com> wrote:
>>
>>> Chris,
>>>
>>> "action" is not going to go to a bean getter. It's going
>>> to go to action method, e.g.:
>>>
>>> action="#{item.action}"
>>>
>>> means you must have:
>>>
>>> public String action()
>>>
>>> on your bean. This is just like all other "action"
>>> attributes in JSF.
>>>
>>> -- Adam
>>>
>>>
>>> On 12/22/06, Chris Hansen <ch...@overstock.com> wrote:
>>>> In the following code for a navigation menu, everything works except the
>>>> action attribute of the tr:commandNavigationItem tag:
>>>>
>>>> <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
>>>> xmlns:h="http://java.sun.com/jsf/html"
>>>>
>>>> xmlns:f="http://java.sun.com/jsf/core"
>>>> xmlns:tr="http://myfaces.apache.org/trinidad">
>>>> <tr:form>
>>>> <tr:navigationPane var="menuItem" value="#{menuModel.model}"
>>>> hint="list"
>>>> inlineStyle="margin-left:-20px;margin-top:-15px;">
>>>> <!-- For some reason text will not be displayed if there is not
>>>> another element in the tr:navigationPane besides the nodeStamp facet-->
>>>> <tr:group></tr:group>
>>>> <f:facet name="nodeStamp">
>>>> <tr:commandNavigationItem action="#{menuItem.action}"
>>>>
>>>> disabled="#{menuItem.disabled}" text="#{menuItem.label}"
>>>>
>>>> destination="#{menuItem.destination}" rendered="#{menuItem.shown}"
>>>>
>>>> selected="#{menuItem.viewId == view.viewId}" immediate="true" />
>>>> </f:facet>
>>>> </tr:navigationPane>
>>>> </tr:form>
>>>> </ui:composition>
>>>>
>>>>
>>>>
>>>> The getter for menuItem.action is never called, while all of the other
>>>> getters are being called (menuItem.destination, menuItem.label, etc.). I
>>>> tried removing the destination=... attribute with no success.
>>>>
>>>> What is the key to using an action on a commandNavigationItem, and what am
>>>> I
>>>> missing?
>>>>
>>>> Thanks.
>>>> --
>>>> Chris Hansen
>>>> Overstock.com
>>>> Internal Applications
>>>> 6350 South 3000 East
>>>> Salt Lake City, Utah 84121
>>>> Toll Free: 800.The.Big.O (843-2446)
>>>> www.overstock.com
>>>>
>>>>
>>
>>
Re: Action attribute of tr:commandNavigationItem ignored
Posted by Adam Winer <aw...@gmail.com>.
You cannot use a getter for "action". That isn't how it works.
The method *is* the action. You cannot do:
public MethodBinding getAction()
... you must do:
public String action()
... which could be implemented along the lines of:
public String action()
{
MethodBinding action = getAction();
if (action == null) return null;
FacesContext context = FacesContext.getCurrentInstance();
Object retVal = action.invoke(context, null);
if (retVal == null)
return null;
return retVal.toString();
}
-- Adam
On 12/26/06, Chris Hansen <ch...@overstock.com> wrote:
> I should have specified, but the getter for menuItem.action returns a
> javax.faces.el.MethodBinding . Are you saying that no action can be bound to
> a getter that returns a MethodBinding?
>
> --
> Chris Hansen
> Overstock.com
> Internal Applications
> 6350 South 3000 East
> Salt Lake City, Utah 84121
> Toll Free: 800.The.Big.O (843-2446)
> www.overstock.com
>
>
> On 12/22/06 6:22 PM, "Adam Winer" <aw...@gmail.com> wrote:
>
> > Chris,
> >
> > "action" is not going to go to a bean getter. It's going
> > to go to action method, e.g.:
> >
> > action="#{item.action}"
> >
> > means you must have:
> >
> > public String action()
> >
> > on your bean. This is just like all other "action"
> > attributes in JSF.
> >
> > -- Adam
> >
> >
> > On 12/22/06, Chris Hansen <ch...@overstock.com> wrote:
> >> In the following code for a navigation menu, everything works except the
> >> action attribute of the tr:commandNavigationItem tag:
> >>
> >> <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
> >> xmlns:h="http://java.sun.com/jsf/html"
> >>
> >> xmlns:f="http://java.sun.com/jsf/core"
> >> xmlns:tr="http://myfaces.apache.org/trinidad">
> >> <tr:form>
> >> <tr:navigationPane var="menuItem" value="#{menuModel.model}"
> >> hint="list"
> >> inlineStyle="margin-left:-20px;margin-top:-15px;">
> >> <!-- For some reason text will not be displayed if there is not
> >> another element in the tr:navigationPane besides the nodeStamp facet-->
> >> <tr:group></tr:group>
> >> <f:facet name="nodeStamp">
> >> <tr:commandNavigationItem action="#{menuItem.action}"
> >>
> >> disabled="#{menuItem.disabled}" text="#{menuItem.label}"
> >>
> >> destination="#{menuItem.destination}" rendered="#{menuItem.shown}"
> >>
> >> selected="#{menuItem.viewId == view.viewId}" immediate="true" />
> >> </f:facet>
> >> </tr:navigationPane>
> >> </tr:form>
> >> </ui:composition>
> >>
> >>
> >>
> >> The getter for menuItem.action is never called, while all of the other
> >> getters are being called (menuItem.destination, menuItem.label, etc.). I
> >> tried removing the destination=... attribute with no success.
> >>
> >> What is the key to using an action on a commandNavigationItem, and what am I
> >> missing?
> >>
> >> Thanks.
> >> --
> >> Chris Hansen
> >> Overstock.com
> >> Internal Applications
> >> 6350 South 3000 East
> >> Salt Lake City, Utah 84121
> >> Toll Free: 800.The.Big.O (843-2446)
> >> www.overstock.com
> >>
> >>
>
>
Re: Action attribute of tr:commandNavigationItem ignored
Posted by Chris Hansen <ch...@overstock.com>.
I should have specified, but the getter for menuItem.action returns a
javax.faces.el.MethodBinding . Are you saying that no action can be bound to
a getter that returns a MethodBinding?
--
Chris Hansen
Overstock.com
Internal Applications
6350 South 3000 East
Salt Lake City, Utah 84121
Toll Free: 800.The.Big.O (843-2446)
www.overstock.com
On 12/22/06 6:22 PM, "Adam Winer" <aw...@gmail.com> wrote:
> Chris,
>
> "action" is not going to go to a bean getter. It's going
> to go to action method, e.g.:
>
> action="#{item.action}"
>
> means you must have:
>
> public String action()
>
> on your bean. This is just like all other "action"
> attributes in JSF.
>
> -- Adam
>
>
> On 12/22/06, Chris Hansen <ch...@overstock.com> wrote:
>> In the following code for a navigation menu, everything works except the
>> action attribute of the tr:commandNavigationItem tag:
>>
>> <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
>> xmlns:h="http://java.sun.com/jsf/html"
>>
>> xmlns:f="http://java.sun.com/jsf/core"
>> xmlns:tr="http://myfaces.apache.org/trinidad">
>> <tr:form>
>> <tr:navigationPane var="menuItem" value="#{menuModel.model}"
>> hint="list"
>> inlineStyle="margin-left:-20px;margin-top:-15px;">
>> <!-- For some reason text will not be displayed if there is not
>> another element in the tr:navigationPane besides the nodeStamp facet-->
>> <tr:group></tr:group>
>> <f:facet name="nodeStamp">
>> <tr:commandNavigationItem action="#{menuItem.action}"
>>
>> disabled="#{menuItem.disabled}" text="#{menuItem.label}"
>>
>> destination="#{menuItem.destination}" rendered="#{menuItem.shown}"
>>
>> selected="#{menuItem.viewId == view.viewId}" immediate="true" />
>> </f:facet>
>> </tr:navigationPane>
>> </tr:form>
>> </ui:composition>
>>
>>
>>
>> The getter for menuItem.action is never called, while all of the other
>> getters are being called (menuItem.destination, menuItem.label, etc.). I
>> tried removing the destination=... attribute with no success.
>>
>> What is the key to using an action on a commandNavigationItem, and what am I
>> missing?
>>
>> Thanks.
>> --
>> Chris Hansen
>> Overstock.com
>> Internal Applications
>> 6350 South 3000 East
>> Salt Lake City, Utah 84121
>> Toll Free: 800.The.Big.O (843-2446)
>> www.overstock.com
>>
>>
Re: Action attribute of tr:commandNavigationItem ignored
Posted by Adam Winer <aw...@gmail.com>.
Chris,
"action" is not going to go to a bean getter. It's going
to go to action method, e.g.:
action="#{item.action}"
means you must have:
public String action()
on your bean. This is just like all other "action"
attributes in JSF.
-- Adam
On 12/22/06, Chris Hansen <ch...@overstock.com> wrote:
> In the following code for a navigation menu, everything works except the
> action attribute of the tr:commandNavigationItem tag:
>
> <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
> xmlns:h="http://java.sun.com/jsf/html"
>
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:tr="http://myfaces.apache.org/trinidad">
> <tr:form>
> <tr:navigationPane var="menuItem" value="#{menuModel.model}"
> hint="list"
> inlineStyle="margin-left:-20px;margin-top:-15px;">
> <!-- For some reason text will not be displayed if there is not
> another element in the tr:navigationPane besides the nodeStamp facet-->
> <tr:group></tr:group>
> <f:facet name="nodeStamp">
> <tr:commandNavigationItem action="#{menuItem.action}"
>
> disabled="#{menuItem.disabled}" text="#{menuItem.label}"
>
> destination="#{menuItem.destination}" rendered="#{menuItem.shown}"
>
> selected="#{menuItem.viewId == view.viewId}" immediate="true" />
> </f:facet>
> </tr:navigationPane>
> </tr:form>
> </ui:composition>
>
>
>
> The getter for menuItem.action is never called, while all of the other
> getters are being called (menuItem.destination, menuItem.label, etc.). I
> tried removing the destination=... attribute with no success.
>
> What is the key to using an action on a commandNavigationItem, and what am I
> missing?
>
> Thanks.
> --
> Chris Hansen
> Overstock.com
> Internal Applications
> 6350 South 3000 East
> Salt Lake City, Utah 84121
> Toll Free: 800.The.Big.O (843-2446)
> www.overstock.com
>
>