I'm somewhat new to JSF/MyFaces so I'm not familiar with the past projects, but it's good to know that this is an aberration.
Jeff Bischoff wrote: > > Depends what version you need it for. The standard practice for this > project is to release the source along with the binaries. They are > generally right there next to each other on the main download page. The > exception to this is a couple of releases this summer which did not > include a source release. This occurred due to problems migrating to the > maven 2 build. > > The only current release with no source on the download page is > Tomahawk. But I understand that the next release will have it. > > Regards, > > Jeff Bischoff > Kenneth L Kurz & Associates, Inc. > > monkeyden wrote: >> 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#a6977203 Sent from the MyFaces - Users mailing list archive at Nabble.com.

