I wouldn't say it's "very accessible" unless: [1] There is a link to it on the download page (right next to the link to the binaries, I might add) [2] I can download it as a zip file, to allow me to step through it in my debugger.
and I don't have to: [3] View Java code from my browser (icky!) [4] Rebuild the source tree myself, to step through it. Disclaimer: Square brackets ([]) provided not for sarcasm, but readability. :) Jeff Bischoff wrote: > > 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()); >>>>> } >>>> >>>> >>>> >>> >> > > > > -- View this message in context: http://www.nabble.com/Getting-a-reference-to-my-backing-bean-in-TabChangeListener-tf2495151.html#a6963901 Sent from the MyFaces - Users mailing list archive at Nabble.com.

