Re: Conditional Validation in t5
am trying the same example , But could you show us the autheticator java class :) Mine is : package org.example.myapp.services; public class UserAuthenticator { public String userName; public String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isValide(String usr,String pass) { if(usr.equals(usr)&&pass.equals(pass)) { System.out.println(usr); System.out.println(pass); return true; } else return false; } } but it did not work i got this message: 15:48:53,505 INFO [STDOUT] [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.example.myapp.pages.Contact java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for org.example.myapp.pages.Contact at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:300) at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.getInstantiator(ComponentInstantiatorSourceImpl.java:276) at $ComponentInstantiatorSource_12728c0ea0e.getInstantiator($ComponentInstantiatorSource_12728c0ea0e.java) at org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:193) at org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:183) at org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:157) at $PageLoader_12728c0ea3e.loadPage($PageLoader_12728c0ea3e.java) at org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210) at org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:99) at $PagePool_12728c0ea3d.checkout($PagePool_12728c0ea3d.java) at org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:51) at $RequestPageCache_12728c0ea3c.get($RequestPageCache_12728c0ea3c.java) at $RequestPageCache_12728c0ea35.get($RequestPageCache_12728c0ea35.java) at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:52) at org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943) at $PageRenderRequestHandler_12728c0ea38.handle($PageRenderRequestHandler_12728c0ea38.java) at $PageRenderRequestHandler_12728c0ea23.handle($PageRenderRequestHandler_12728c0ea23.java) at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48) at $ComponentRequestHandler_12728c0ea28.handlePageRender($ComponentRequestHandler_12728c0ea28.java) at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45) at $Dispatcher_12728c0ea2a.dispatch($Dispatcher_12728c0ea2a.java) at $Dispatcher_12728c0ea21.dispatch($Dispatcher_12728c0ea21.java) at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245) at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) at $RequestHandler_12728c0ea22.service($RequestHandler_12728c0ea22.java) at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778) at $RequestHandler_12728c0ea22.service($RequestHandler_12728c0ea22.java) at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767) at $RequestHandler_12728c0ea22.service($RequestHandler_12728c0ea22.java) at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) at $RequestHandler_12728c0ea22.service($RequestHandler_12728c0ea22.java) at org.example.myapp.services.AppModule$1.service(AppModule.java:96) at $RequestFilter_12728c0ea1d.service($RequestFilter_12728c0ea1d.java) at $RequestHandler_12728c0ea22.service($RequestHandler_12728c0ea22.java) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81) at org.apache.tapestry5.ioc.internal.util.ConcurrentBar
Re: Conditional Validation in t5
For god's shake, thanks a lot for your response,Hugo! I was trying something different for activate validations in both sides, but, due to the restrictions I think I'm gonna follow your idea. Thanks a lot again for your time :D -- View this message in context: http://www.nabble.com/Conditional-Validation-in-t5-tp20126760p20147177.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]
Re: Conditional Validation in t5
It sure is possible. Looking at your use case my approach would be to implement those conditional validation on the "onValidateForm" method in your page / component class. For example: public class Login { @Persist @Property private String userId; @Property private String password; @Component private Form form; @Inject private LoginAuthenticator authenticator; void onValidateForm() { if (! authenticator.isValidLogin(userId, password)) { form.recordError("Invalid user name or password."); } } Object onSuccess() { return PostLogin.class; } } On Thu, Oct 23, 2008 at 9:37 AM, Daniel Alonso Sanchez <[EMAIL PROTECTED]>wrote: > > Hi everybody, we are in a hurry in our project, because some requirements > made us to put somethin like Conditional Validations. > > For instance, input components (textfield, select, ...) will always have > format validations, but when the page will be invoked with a parameter, a > validation required is desired to be added to the set of validations per > field. > > Could this be possible? Is there anyway to do it without duplication the > pages? > > Please, if anyone knows how to do it or is just impossible, pleas, tell me > something as soon as possible. Thanks a lot in advance. > -- > View this message in context: > http://www.nabble.com/Conditional-Validation-in-t5-tp20126760p20126760.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] > >
Re: Conditional validation in T4?
looks like a bug then - you could add a JIRA On Dec 21, 2007 11:51 PM, Drew McAuliffe <[EMAIL PROTECTED]> wrote: > The problem with the identity validator is that it doesn't seem to capture > the current value of the other control, which is the essential problem I'm > having. If you have 2 controls, and the second one uses an identity > validator to make sure it's the same as the first, if you change them both > at the same time, then the validator assumes the old value of the first > control rather than the new one. So if the controls were set to "1" and "2", > respectively, and on a submit you set them both to "3", the validator > doesn't pick up that the first control was set to "3" on that submit. So > validation fails, because it thinks its comparing "1" to "3" instead of the > current values, "3" to "3". > Am I missing something obvious? While debugging the Identity validator, it > is definitely not picking up the value in the "referent" control that was > submitted with the form. It's picking up its old value. > > This is the crux of the problem I'm having. I don't know where in the course > of a form submit that new values as part of the submission are available to > other parts of the form. I'll look into the grouping example. > > > On Dec 21, 2007 7:44 AM, Steve Shucker <[EMAIL PROTECTED]> wrote: > > > http://tapestry.apache.org/tapestry4.1/usersguide/validation.html > > > > http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/validator/Identity.html > > > > Look at the match/differ validators. The cover the basic concept of a > > validator that acts on two components. You can probably write a variant > > of the Identity class that will throw a ValidatorException is the > > referent is non-null and the validated control is null. > > > > Another approach would be to encapsulate the interrelated controls in a > > component to be validated as a group. I think there's an example of > > this in Kent Tong's book. > > > > -Steve > > > > Drew McAuliffe wrote: > > > I'm running into a problem with validators in T4. I have a situation > > where I > > > sometimes need to validate a field on a form, but only if another field > > on > > > the same form has a certain set of values. For example, a "ship > > quantity" > > > field on an order form is only required if the order delivery method is > > > "shipment" and not "download" (you don't have a ship quantity for an > > order > > > that doesn't ship). Again, both fields are on the same form. > > > Maybe I'm missing something but I don't know how to make the use of a > > > validator conditional. I don't want to do manual validation in the > > submit > > > method. I've tried setting the "validators" of the text field to a > > method on > > > the page class that checks the field values, but it seems that the > > > validation does not have access to the runtime selection made by the > > user. > > > In other words, at the time my method tries to check if a validator is > > > necessary, it is looking at old data and doesn't have access to the > > value > > > the user was trying to submit. Something related to when in the page > > cycle > > > validation is checked, I'm sure. > > > > > > Any ideas? This is for server-side validation, though of course > > client-side > > > validation would be really nice too! (I imagine that would have to be > > using > > > some sort of async callback method). > > > > > > > > > > - > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > -- Andreas Andreou - [EMAIL PROTECTED] - http://blog.andyhot.gr Tapestry / Tacos developer Open Source / JEE Consulting - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Conditional validation in T4?
The problem with the identity validator is that it doesn't seem to capture the current value of the other control, which is the essential problem I'm having. If you have 2 controls, and the second one uses an identity validator to make sure it's the same as the first, if you change them both at the same time, then the validator assumes the old value of the first control rather than the new one. So if the controls were set to "1" and "2", respectively, and on a submit you set them both to "3", the validator doesn't pick up that the first control was set to "3" on that submit. So validation fails, because it thinks its comparing "1" to "3" instead of the current values, "3" to "3". Am I missing something obvious? While debugging the Identity validator, it is definitely not picking up the value in the "referent" control that was submitted with the form. It's picking up its old value. This is the crux of the problem I'm having. I don't know where in the course of a form submit that new values as part of the submission are available to other parts of the form. I'll look into the grouping example. On Dec 21, 2007 7:44 AM, Steve Shucker <[EMAIL PROTECTED]> wrote: > http://tapestry.apache.org/tapestry4.1/usersguide/validation.html > > http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/validator/Identity.html > > Look at the match/differ validators. The cover the basic concept of a > validator that acts on two components. You can probably write a variant > of the Identity class that will throw a ValidatorException is the > referent is non-null and the validated control is null. > > Another approach would be to encapsulate the interrelated controls in a > component to be validated as a group. I think there's an example of > this in Kent Tong's book. > > -Steve > > Drew McAuliffe wrote: > > I'm running into a problem with validators in T4. I have a situation > where I > > sometimes need to validate a field on a form, but only if another field > on > > the same form has a certain set of values. For example, a "ship > quantity" > > field on an order form is only required if the order delivery method is > > "shipment" and not "download" (you don't have a ship quantity for an > order > > that doesn't ship). Again, both fields are on the same form. > > Maybe I'm missing something but I don't know how to make the use of a > > validator conditional. I don't want to do manual validation in the > submit > > method. I've tried setting the "validators" of the text field to a > method on > > the page class that checks the field values, but it seems that the > > validation does not have access to the runtime selection made by the > user. > > In other words, at the time my method tries to check if a validator is > > necessary, it is looking at old data and doesn't have access to the > value > > the user was trying to submit. Something related to when in the page > cycle > > validation is checked, I'm sure. > > > > Any ideas? This is for server-side validation, though of course > client-side > > validation would be really nice too! (I imagine that would have to be > using > > some sort of async callback method). > > > > > > - > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
Re: Conditional validation in T4?
http://tapestry.apache.org/tapestry4.1/usersguide/validation.html http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/validator/Identity.html Look at the match/differ validators. The cover the basic concept of a validator that acts on two components. You can probably write a variant of the Identity class that will throw a ValidatorException is the referent is non-null and the validated control is null. Another approach would be to encapsulate the interrelated controls in a component to be validated as a group. I think there's an example of this in Kent Tong's book. -Steve Drew McAuliffe wrote: I'm running into a problem with validators in T4. I have a situation where I sometimes need to validate a field on a form, but only if another field on the same form has a certain set of values. For example, a "ship quantity" field on an order form is only required if the order delivery method is "shipment" and not "download" (you don't have a ship quantity for an order that doesn't ship). Again, both fields are on the same form. Maybe I'm missing something but I don't know how to make the use of a validator conditional. I don't want to do manual validation in the submit method. I've tried setting the "validators" of the text field to a method on the page class that checks the field values, but it seems that the validation does not have access to the runtime selection made by the user. In other words, at the time my method tries to check if a validator is necessary, it is looking at old data and doesn't have access to the value the user was trying to submit. Something related to when in the page cycle validation is checked, I'm sure. Any ideas? This is for server-side validation, though of course client-side validation would be really nice too! (I imagine that would have to be using some sort of async callback method). - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Conditional validation in T4?
You can bind your validators dynamically (validatory="ognl:conditionalValidStuff" ) and submit changes of you pre-conditions via @EventListener. Sounds a bit like overkill for simple dependencies, but can do very complex things > -Original Message- > From: Drew McAuliffe [mailto:[EMAIL PROTECTED] > Sent: Friday, December 21, 2007 8:25 AM > To: [EMAIL PROTECTED] > Subject: Conditional validation in T4? > > I'm running into a problem with validators in T4. I have a > situation where I sometimes need to validate a field on a > form, but only if another field on the same form has a > certain set of values. For example, a "ship quantity" > field on an order form is only required if the order delivery > method is "shipment" and not "download" (you don't have a > ship quantity for an order that doesn't ship). Again, both > fields are on the same form. > Maybe I'm missing something but I don't know how to make the > use of a validator conditional. I don't want to do manual > validation in the submit method. I've tried setting the > "validators" of the text field to a method on the page class > that checks the field values, but it seems that the > validation does not have access to the runtime selection made > by the user. > In other words, at the time my method tries to check if a > validator is necessary, it is looking at old data and doesn't > have access to the value the user was trying to submit. > Something related to when in the page cycle validation is > checked, I'm sure. > > Any ideas? This is for server-side validation, though of > course client-side validation would be really nice too! (I > imagine that would have to be using some sort of async > callback method). > - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Conditional validation
Steve Shucker wrote: > Http only submits one set of form data. If I have two forms, only the > data from the form I submit is transmitted back to the server. > Tapestry wouldn't receive the other information I want to persist. > An async submit would get around this by not re-rendering the page to > avoid losing the other state. If you mark your properties as @Persist("client"), Tapestry will include their state as hidden form fields in all forms on your page, so no matter which form is submitted, you won't lose the state of the others. If you mark them as @Persist("session") they will be stored in the HttpSession; either way they will be persisted. I'm not actually using this feature in my app yet, but I have tested it and it does work... - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Conditional validation
Http only submits one set of form data. If I have two forms, only the data from the form I submit is transmitted back to the server. Tapestry wouldn't receive the other information I want to persist. An async submit would get around this by not re-rendering the page to avoid losing the other state. -Steve Michael Sims wrote: Steve Shucker wrote: I need everything in one form because the checkbox states should be persisted even when the popup dialog is submitted. [...] My options as I see them: [...] - use a separate form with an async submit for the popup (may work, but then I'd have to return some javascript to submit the main page and redirect) Why not use a separate form, and mark the properties used by your forms with the @Persist annotation (either client or session)? - 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]
RE: Conditional validation
Steve Shucker wrote: > I need everything in one form > because the checkbox states should be persisted even when the popup > dialog is submitted. [...] > My options as I see them: [...] > - use a separate form with an async submit for the popup (may work, > but then I'd have to return some javascript to submit the main page > and redirect) Why not use a separate form, and mark the properties used by your forms with the @Persist annotation (either client or session)? - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]