Simon,

   Can you point me to where I can find source code for MyFaces?
   I am really having a hard time trying to re-create my custom component in
MyFaces.
   My first problem is that I can't find the compatible library for
com.sun.faces.util.Util in MyFaces.
   
Thanks.


Simon Kitching-3 wrote:
> 
> Yep, having both the Sun and Myfaces implementations in the classpath is 
> likely to cause all sorts of problems. The Sun "ConfigureListener" is 
> there in the stack trace; I would guess that it is searching for all 
> META-INF/faces-config.xml files and processing them, and so is MyFaces, 
> thus adding every phase listener twice.
> 
> There are no objects "in JSF" that are not in MyFaces; the MyFaces 
> "core" library is a 100% feature-complete implementation of the JSF 1.1 
> specification.
> 
> If you want to see how to write a custom table implementation, you could 
> look at the source for the MyFaces Tomahawk library; it includes a 
> custom table. Before doing this, though, are you quite sure you do need 
> to write a custom table? The tomahawk table is pretty flexible...
> 
> Regards,
> 
> Simon
> 
> 
> A.McCall wrote:
>> You're right....  I am getting six listeners...
>> "listeners"= PhaseListener[6]  (id=89)       
>>      [0]= ExtensionsPhaseListener  (id=2387) 
>>      [1]= AutoScrollPhaseListener  (id=2384) 
>>      [2]= PageLifeCycle  (id=2385)   
>>      [3]= ExtensionsPhaseListener  (id=2386) 
>>      [4]= AutoScrollPhaseListener  (id=2388) 
>>      [5]= PageLifeCycle  (id=88)     
>>
>> PageLifeCycle is my custom listener.
>>
>> I did what you suggested and found that Myfaces and JSF is starting the
>> listeners..
>> here is my log:
>> java.lang.Throwable
>>      at
>> com.rosetta.hcp.pageevents.PageLifeCycle.<init>(PageLifeCycle.java:18)
>>      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
>>      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
>> Source)
>>      at java.lang.reflect.Constructor.newInstance(Unknown Source)
>>      at java.lang.Class.newInstance0(Unknown Source)
>>      at java.lang.Class.newInstance(Unknown Source)
>>      at
>> com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:711)
>>      at
>> com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:398)
>>      at
>> com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:328)
>>      at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3729)
>>      at
>>
>> I think my problem my be that I have jsf and myfaces jars in my lib.
>> I have both because we have a custom component for a datatable and they
>> need
>> both jars.
>> I may need to rewrite custom component to use only MyFaces.  
>> This will be hard since there are objects in JSF and not in MyFaces.  
>> I need to find code in MyFaces for the datatable. Is there any where I
>> can
>> look to see how to create a custom component thats renders a table in
>> MyFaces?  
>>
>> Thanks for all your help.
>>
>>
>>
>>
>> Simon Kitching-3 wrote:
>>   
>>> What I was expecting is that you would see two copies of *your* phase 
>>> listener in that list. At the very least, you should see *one*, 
>>> otherwise you wouldn't be getting any callbacks at all!
>>>
>>> The phase listeners you list below are normal, and won't be making 
>>> callbacks to your code.
>>>
>>> Just FYI, JSF implementations are required to look for all occurrences 
>>> of META-INF/faces-config.xml in the classpath and process them all on 
>>> startup. A faces-config file can provide a list of phase-listeners to be 
>>> regisered on startup; if you look inside the tomahawk jarfile you will 
>>> find a faces-config.xml file that defines these two listeners. To 
>>> repeat, though, these are nothing to do with your problem.
>>>
>>> Regards,
>>>
>>> Simon
>>>
>>> A.McCall wrote:
>>>     
>>>> Simon,
>>>>
>>>>     I did what you said.  You are absolutely right...I do have 2
>>>> listeners...
>>>>      1. org.apache.myfaces.renderkit.html.util.ExtensionsPhaseListener
>>>>      2. org.apache.myfaces.renderkit.html.util.AutoScrollPhaseListener
>>>>
>>>> I do not see where these listeners are configured.
>>>> Do you know how I set it up so I just have one listener?
>>>>
>>>> Thanks.
>>>>
>>>>
>>>> Simon Kitching-3 wrote:
>>>>   
>>>>       
>>>>> A.McCall wrote:
>>>>>     
>>>>>         
>>>>>>   I am having the same problem.  My phaselistener is being called
>>>>>> twice, 
>>>>>> I
>>>>>> do not have configs entry in my web.xml, so it's not that.
>>>>>>
>>>>>> Just wondering....  Did you ever find out why yours was being called
>>>>>> twice.
>>>>>>       
>>>>>>           
>>>>> Phase listeners work fine for me. I'd be willing to bet that you do
>>>>> have 
>>>>> the phase listener registered twice.
>>>>>
>>>>> I suggest that in your phase listener you get the list of registered 
>>>>> listeners then iterate through this and check that there is only one 
>>>>> object whose class is your custom listener class.
>>>>>
>>>>> LifecycleFactory factory = (LifecycleFactory)
>>>>>     FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
>>>>>
>>>>> Lifecycle lc = 
>>>>> factory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
>>>>>
>>>>> PhaseListener[] listeners = lc.getPhaseListeners();
>>>>>
>>>>> If it is registered twice, then you could put a logging statement in 
>>>>> your phase-listener's constructor that prints out the current stack 
>>>>> trace; that will show you where the instances are being created.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Simon
>>>>>
>>>>>
>>>>>     
>>>>>         
>>>>   
>>>>       
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Why-afterPhase%28PhaseEvent-event%29-gets-called-twice-tf288329.html#a7554497
Sent from the MyFaces - Users mailing list archive at Nabble.com.

Reply via email to