>> Hmm you'd think some tool could do that for you... Really!!
Anyways, it appears we've reached the end of this discussion. Thanks for all your responses folks. -----Original Message----- From: Jeff Bischoff [mailto:[EMAIL PROTECTED] Sent: Thursday, December 21, 2006 11:16 AM To: MyFaces Discussion Subject: Re: from-outcome value David Delbecq wrote: > example design > > public class OutcomeConstants { > public static final String OUTCOME_CONTINUE="outcome.continue"; > } > public String someAction(){ > ... > return OutcomeConstants.OUTCOME_CONTINUE; > } > > navigation rule: > > <from-outcome>outcome.continue</from-outcome> > We use a design like this. It's always best when you can force typos to cause compilation errors, that way you don't miss it. Then all you have to manually check is the mapping from the constants to the xml. Hmm you'd think some tool could do that for you... Regards, Jeff Bischoff Kenneth L Kurz & Associates, Inc. David Delbecq wrote: > Sorry, but there are 2 places where typos can happen the .xml file the > action method > > in you case, you have moved the string from action to a property file. > Typos in your case can happen in 3 places the .xml (typo in @key@) the > property file (bad key name) the helper class that call an entry in > properties file (bad key) > > better suggestion: > 'outcome.continue' on .xml file > 'outcome.continue' as a public static final String OUTCOME_CONTINUE in > helper class you only have 2 instances of the string outcome.continue > all over your code, typos in OUTCOME_CONTINUE variable will generates > compilation errors, it's easy to maintain, you don't have to go thru > an over engineered process, and you have one less place where a typo > can arise. > > example design > > public class OutcomeConstants { > public static final String OUTCOME_CONTINUE="outcome.continue"; > } > public String someAction(){ > ... > return OutcomeConstants.OUTCOME_CONTINUE; > } > > navigation rule: > > <from-outcome>outcome.continue</from-outcome> > > En l'instant précis du 12/21/06 15:40, Anil Kommareddi s'exprimait > dans toute sa noblesse: >> Hi, >> I agree this is a bit of overengineering, but when working with >> developers whose first language is not english, typos or misspellings >> are a part of the cycle and this is one way to minimize them. We are >> working on a largish ERP project with over 200 navigation rules and >> can use whatever help we can get from tooling, automation and frameworks :). >> >> As I mentioned earlier, this is not an elegant solution and as you >> pointed, probably not desirable either as described. I am just >> soliciting ideas and providing my thoughts for a discussion. >> >> -----Original Message----- >> From: David Delbecq [mailto:[EMAIL PROTECTED] >> Sent: Thursday, December 21, 2006 9:18 AM >> To: MyFaces Discussion >> Subject: Re: from-outcome value >> >> Hi, >> >> This all looks to me a bit over-engineering and useless round cycling >> (defining constants string reference that resolve to constant string >> reference...) >> >> Why could this pack of things: >> <from-outcome>@OUTCOME.CONTINUE@</from-outcome> >> public String someAction(){ >> ... >> return outcomeUtils.getOutcoume("OUTCOME.CONTINUE"); >> } >> outcome.properties: >> OUTCOME.CONTINUE=continue >> finally proceed thru a ant script to convert your file >> >> in any way be better and more maintainable than this: >> <from-outcome>OUTCOME.CONTINUE</from-outcome> >> public String someAction(){ >> return"OUTCOME.CONTINUE"; >> } >> >> In both cases, you need OUTCOME.CONTINUE to be used inside your >> action and inside your navigation-case. Then use it as your action return! >> >> En l'instant précis du 12/21/06 14:52, Anil Kommareddi s'exprimait >> dans toute sa noblesse: >> >>> Thanks Marco, that is exactly what we have been doing. >>> >>> Here is one way that I thought of doing if anyone else is interested: >>> >>> Define the outcomes in a properties file and use an ANT filterset to >>> use this properties file to replace the outcomes in the >>> faces-config.xml during the build process. To take your example, the >>> Outcomes class would contain a method like this: >>> >>> *public* *static* String getOutcome(String id) { >>> *return* /getResourceString/(ResourceUtils./TYPE_OUTCOMES/, id); >>> } >>> >>> The navigation rule would look like this: >>> >>> <navigation-case> >>> <from-outcome>@OUTCOME.CONTINUE@</from-outcome> >>> <to-view-id>/somepage.jsp</to-view-id> >>> </navigation-case> >>> >>> and the Outcomes properties file will contain: >>> >>> OUTCOME.CONTINUE=continue >>> >>> While this works, if anyone has a more elegant solution, I would >>> love to see it. >>> >>> Thanks for your response. >>> - Anil. >>> >>> -------------------------------------------------------------------- >>> -- >>> -- >>> *From:* Beelen, Marco [mailto:[EMAIL PROTECTED] >>> *Sent:* Thursday, December 21, 2006 4:01 AM >>> *To:* MyFaces Discussion >>> *Subject:* RE: from-outcome value >>> >>> Anil, >>> >>> There is no way you can specify the name of an outcome just once and >>> use a reference to it both in the java-code of your managed-bean and >>> the navigation-rules in your faces-config.xml. Since your >>> faces-config.xml doesn't get build or compile, there is no way to >>> garantee that the values used for outcomes are 'valid' and match the >>> String you use in the managed-bean. >>> >>> For me it works fine to create a Outcomes-class which contains a set >>> of static final String for all outcomes I use through out the entire >>> application. It allows to reference to those outcomes in your >>> managed-bean and set JavaDoc on the outcome-constants to spefify the >>> String to use in the faces-config.xml. >>> >>> public class Outcomes { >>> /** >>> * Outcome use to proceed to the next step in a wizard: "continue". >>> */ >>> public static final String CONTINUE = "continue"; } >>> >>> managed-bean: >>> >>> public String someMethod() { >>> return Outcomes.CONTINUE; >>> } >>> >>> This doesn't prevent you from making mistakes and errors in typing >>> the value for from-outcome, but does offer you the possibility to >>> re-use your code better and made changes easier by allowing you to >>> refactor your code instead of performing 'global' search and >>> replace-action on your Strings used as outcomes. >>> >>> With kind regards, >>> Marco Beelen >>> >>> >>> >>> >>> >>> >>> >>> >>> -------------------------------------------------------------------- >>> -- >>> -- >>> *From:* Anil Kommareddi [mailto:[EMAIL PROTECTED] >>> *Sent:* woensdag 20 december 2006 20:00 >>> *To:* [email protected] >>> *Subject:* OT: from-outcome value >>> >>> Folks, >>> Has anyone devised or know of a pattern to be able to use a >>> reference to a constant string or property file in the from-outcome >>> tag of a navigation-case instead of 'hardcoding' the actual string there? >>> >>> My objective here is to maintain a common repository of outcomes >>> either in a class or property file and refer to them from both the >>> action method and the navigation case. >>> >>> Thanks - Anil. >>> -------------------------------------------------------------------- >>> -- >>> -------- >>> Notice: This e-mail message, together with any attachments, >>> contains information of Merck & Co., Inc. (One Merck Drive, >>> Whitehouse Station, New Jersey, USA 08889), and/or its affiliates >>> (which may be known outside the United States as Merck Frosst, Merck >>> Sharp & Dohme or MSD and in Japan, as Banyu - direct contact >>> information for affiliates is available at >>> http://www.merck.com/contact/contacts.html) that may be >>> confidential, proprietary copyrighted and/or legally privileged. It >>> is intended solely for the use of the individual or entity named on >>> this message. If you are not the intended recipient, and have >>> received this message in error, please notify us immediately by reply >>> e-mail and then delete it from your system. >>> >>> -------------------------------------------------------------------- >>> -- >>> -------- >>> >> >> > > > >

