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.

Reply via email to