Raulmt, I'm using exactly the same code as you with the solution #2 from Robert and it's working very well for me. Maybe you should try it first.
2008/6/3 Robert Zeigler <[EMAIL PROTECTED]>: > This is by-product of the live class reloading, and not related to the > instrumentation, per se. > Two classes in different classloaders are not equal. In this case, you're > casting the component object, whose class is in the "discardable" > classloader (which handles page and component classes) to the "MyPage" class > which is in the non-discardable class loader (which handles anything not a > page, component, or mixin). There are two workarounds to your problem. > 1) You code will work "as is" if you put it into a page or component. In > that case, you could try passing the page or component to the service, > instead of trying to load the page or component in the service. Or... > 2) Have your page/pages implement a common interface (the interface class > should be stored outside of the page/component/mixin sub-packages). Then > cast to your interface, instead of to the actual page. Personally, I think > this is a cleaner solution, anyway (knowing the property you want to set > beforehand, but not knowing the actual class/page name until runtime smells > like you want an interface, anyway). > > Robert > > On Jun 2, 2008, at 6/25:18 PM , raulmt wrote: > >> >> No, I need to do this in a service... but even in a page, i have the page >> class in a String at runtime, so I can't declare a property and use the >> InjectPage like that.... >> >> Regards. >> >> >> Robert Zeigler wrote: >>> >>> Is this in a component or page class? If so, the answer is: >>> >>> @InjectPage >>> private MyPage page; >>> ... >>> >>> page.setSomething(""); >>> >>> Robert >>> >>> On Jun 2, 2008, at 6/25:04 PM , raulmt wrote: >>> >>>> >>>> Hi, >>>> >>>> I'm trying to obtain a page from it's name to set a property on it. >>>> I'm >>>> trying something like this: >>>> >>>> Component page = componentSource.getPage("MyPage"); >>>> MyPage myPage = (MyPage)page; >>>> myPage.setSomething(""); >>>> >>>> This code fails in the cast, despite a >>>> >>>> System.out.println(page.getClass().getName()); >>>> >>>> prints the expected page class (com.myapp.pages.MyPage).... I assume >>>> is >>>> because all the instrumentation T5 does to the pages, but is there a >>>> way to >>>> obtain a page from its name and then set a property that the >>>> "original" >>>> class has?? >>>> >>>> The only workaround i've found is to call the method setSomething with >>>> reflection, without casting it to MyPage, but it would be really >>>> nice not to >>>> use reflection for this.... >>>> >>>> Regards. >>>> >>>> >>>> Filip S. Adamsen-2 wrote: >>>>> >>>>> Hi, >>>>> >>>>> RequestPageCache is an internal service, it's better to use >>>>> ComponentSource instead. It has methods to get a component or page by >>>>> logical name. >>>>> >>>>> >>>>> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry/services/ComponentSource.html >>>>> >>>>> -Filip >>>>> >>>>> On 2008-05-05 16:01, Kristian Marinkovic wrote: >>>>>> >>>>>> @Inject >>>>>> private RequestPageCache pageCache; >>>>>> >>>>>> pageCache.get(logicalName) >>>>>> >>>>>> >>>>>> g, >>>>>> kris >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Shing Hing Man <[EMAIL PROTECTED]> >>>>>> 05.05.2008 15:53 >>>>>> Bitte antworten an >>>>>> "Tapestry users" <users@tapestry.apache.org> >>>>>> >>>>>> >>>>>> An >>>>>> tapestry Tapestry <[EMAIL PROTECTED]> >>>>>> Kopie >>>>>> >>>>>> Thema >>>>>> Tap 5.0.11 : How to get page instance from page >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Usually, I could use the following to inject a page >>>>>> into another page >>>>>> >>>>>> @InjectPage >>>>>> private DetailsPage details; >>>>>> >>>>>> How to retrieve an instance of a page if I am given >>>>>> the logical name of a page as a String variable ? >>>>>> >>>>>> In Tap 4, I would use RequestCycle.getPage(pageName). >>>>>> >>>>>> Thanks in advance for any asistance! >>>>>> >>>>>> Shing >>>>>> >>>>>> Home page : http://www.lombok.demon.co.uk/ >>>>>> >>>>>> >>>>>> >>>>>> ___________________________________________________________ >>>>>> Yahoo! For Good. Give and get cool things for free, reduce waste >>>>>> and help >>>>>> our planet. Plus find hidden Yahoo! treasure >>>>>> >>>>>> http://green.yahoo.com/uk/earth-day/ >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> >>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> >>>> http://www.nabble.com/Tap-5.0.11-%3A-How-to-get-page-instance--from-page-tp17062196p17611843.html >>>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/Tap-5.0.11-%3A-How-to-get-page-instance--from-page-tp17062196p17612066.html >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Atenciosamente, Marcelo Lotif --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]