Oh please don't waste your time decompiling! The source is very accessible. :)

[1] Is the project website
[2] Is the download page, with source code for *some* of the releases
[3] Is the SVN repository (online access) for getting the source code directly

Now you can see what's at line 82! :D

[1] http://myfaces.apache.org/
[2] http://myfaces.apache.org/download.html
[3] http://svn.apache.org/repos/asf/myfaces/

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates

monkeyden wrote:
I decompiled the class file for this tag (tomahawk v1.1.3) and found that
there are only two places where casting is done (don't know the line numbers
as it's decompiled code).
1.  TabChangeListener listener =
(TabChangeListener)ClassUtils.newInstance(className);
2.  ((HtmlPanelTabbedPane)component).addTabChangeListener(listener);

Clearly my tab listener won't result in a ClassCastException, because it
implements TabChangeListener, which leaves the HtmlPanelTabbedPane cast. This doesn't appear possible either since the following code is being used:

<t:panelTabbedPane id="tabbedPane" width="650" serverSideTabSwitch="true"
selectedIndex="#{editProfileAction.selectedTab}" >
    ...
    <t:tabChangeListener
type="com.nemoves.pipeline.util.EditUserRecordTabListener"/>
</t:panelTabbedPane>




monkeyden wrote:
Thanks for the reply Jeff.
I am currently trying this but getting a ClassCastException when the
tabChangeListener tag is encountered.  Does anyone know where I can find
the source for tomahawk, so I can step through int he debugger?  Only bin
is available here:  http://www.wmwweb.com/apache/myfaces/
http://www.wmwweb.com/apache/myfaces/
java.lang.ClassCastException: com.site.util.EditUserRecordTabListener
        at
org.apache.myfaces.custom.tabbedpane.TabChangeListenerTag.doStartTag(TabChangeListenerTag.java:82)

Here is the code:

package com.site.util;

import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.AbortProcessingException;

import org.apache.myfaces.custom.tabbedpane.TabChangeEvent;
import org.apache.myfaces.custom.tabbedpane.TabChangeListener;

import com.site.actions.EditUserRecordAction;

public class EditUserRecordTabListener implements TabChangeListener {

    public void processTabChange(TabChangeEvent event) throws
AbortProcessingException {
        int newIndex = event.getNewTabIndex();
        int oldIndex = event.getNewTabIndex();
        EditUserRecordAction action =
(EditUserRecordAction)getManagedBean("editProfileAction");
        action.setSelectedTab(newIndex);
    }
public static Object getManagedBean(String ref) {
        // Find or create the web-tier data object
        // ref like "#{myBean}"
        FacesContext context = FacesContext.getCurrentInstance();
        ValueBinding binding =
context.getApplication().createValueBinding(ref);
        Object result = binding.getValue(context);
        return result;
}
}


Jeff Bischoff wrote:
Monkeyden,

See [1]. This is from the front page of the wiki.

Alternatively, all managed beans can be accessed directly from the appropriate scope (i.e. request, session).

I found the following utility method (based on the wiki page) useful in my application:

/**
* Look up a managed bean by JSP-EL value-binding expression
* @param ref a value-binding expression to lookup
* @return the managed bean referenced by the expression
*/
public static Object getManagedBean(String ref) {
        // Find or create the web-tier data object
        // ref like "#{myBean}"
        FacesContext context = FacesContext.getCurrentInstance();
        ValueBinding binding = context.getApplication().createValueBinding(ref);
        return binding.getValue(context);
}

[1] http://wiki.apache.org/myfaces/AccessingOneManagedBeanFromAnother

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

monkeyden wrote:
Im using a Tomahawk tabbedPane in my JSP

<t:panelTabbedPane id="tabbedPane" bgcolor="#ffffff" width="650"
serverSideTabSwitch="true" selectedIndex="#{myBackingBean.selectedTab}">

I want to implement a TabChangeListener, to set the "selectedTab" value
of
the backing bean.  I don't need to change the view of the component at
all,
since that's handled automatically.  I just need to know what the
currently
selected tab is.  Looking at the hierarchy, there doesn't seem to be a
way
to get my backing bean instance from session to set the value.  This is
how
I would expect this to be done.  Please tell me if I'm way off base or
not.

processTabChange(TabChangeEvent tabChangeEvent){
    MyBackingBean myBean = [get the bean somehow];
    myBean.setSelectedTab(tabChangeEvent.getNewTabIndex());
}







Reply via email to