I compriomised on a page level constant. Not pretty, but a lot better than hard-coding string.
public class FooPage extends BasePage { // below must match name of the page as // Tapestry sees it (not necessairly same as name of page class) public final static String NAME = "Foo"; } @InjectPage(FooPage.NAME) public abstract FooPage getFooPage(); It's not ideal, but it works. If I change my page name, I only have to remember to update constant in page class, and Inject annotations get refactored automatically. If you or anyone else thinks of anything better, I'm all for it... Adam On 3/27/06, Pedro Viegas <[EMAIL PROTECTED]> wrote: > Anyone found a way to make this happen? > Seems like a very important point. Refactoring happends all the time. Is > everyone using these string constants all over the place or not simply using > the InjectPage? > > On 3/6/06, Adam Zimowski <[EMAIL PROTECTED]> wrote: > > > > Thanks much, Till. I'm on JDK 1.5 and tried > > MyPage.class.getSimpleName() but compiler is smart enough to figure > > out this is a non constant expression and won't let you inject page: > > > > @InjectPage(MyPage.class.getSimpleName()) > > > > :-( > > > > On 3/6/06, Till Nagel <[EMAIL PROTECTED]> wrote: > > > Adam, > > > > > > to avoid repeating the page name as string constant, you could use > > > > > > public static final String NAME = > > > MyPage.class.getName().replaceAll(".*\\.", ""); > > > > > > or, if you are using Java 1.5 > > > > > > public static final String NAME = MyPage.class.getSimpleName(); > > > > > > > > > > > > > -----Original Message----- > > > > From: Adam Zimowski [mailto:[EMAIL PROTECTED] > > > > Sent: Friday, March 03, 2006 9:04 PM > > > > To: Tapestry users > > > > Subject: Re: Best Practice: Controlling Page Names > > > > > > > > Enums wouldn't work because .toString() would result in a non-constant > > > > expression. > > > > > > > > So let's assume every page has: > > > > > > > > public static final String NAME = "page_name as defined in > > > *.application > > > > file"; > > > > > > > > Then: > > > > > > > > @InjectPage(Page.NAME) > > > > > > > > Is this a clean way to do this? > > > > > > > > On 3/3/06, Adam Zimowski <[EMAIL PROTECTED]> wrote: > > > > > I'd like to hear what you folks would recommend for controlling when > > > > > referring to pages via their names, such as: > > > > > > > > > > @InjectPage("Registration") > > > > > > > > > > etc.. > > > > > > > > > > If I have the same page injected in 20 places, then rename the page > > > it > > > > > would be a pain to refactor. Since I'm on JDK 1.5, I'm thinking of > > > > > creating page enum, and since toString() of an enum is its value it > > > > > would work rather nicely: > > > > > > > > > > public enum EPages { Home, Registration, etc... } > > > > > > > > > > @InjectPage(EPages.Registration) > > > > > > > > > > Sure, I have one more place to maintain with page names, but I > > > > > wouldn't mind it comparing to current state of affairs. > > > > > > > > > > Or is there even a better way? I'd like to keep injection > > > annotation > > > > > because I've come so accustomed to it. > > > > > > > > > > Regards, > > > > > Adam > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > 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] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > Pedro Viegas > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]