I think you are overcomplicating things. Validate the users input, if two users want the same name within 1 second of each request you probably have bigger problems to deal with. Anyhow, when submit is called, if you get a nonunique exception. Catch in dao/service and throw an exception wicket can handle and present.
Ryan Gravener http://bit.ly/no_word_docs On Fri, Sep 25, 2009 at 11:58 AM, Paul Huang <paulhuan...@gmail.com> wrote: > Hello, > > I would like to get your suggestion about how to validate a user name input > by checking if the name has already been taken (exists in the back-end > database); and how to show feedback messages right next to the input field > if it has. > > Typically, when a user registers to a website, he needs to choose a user > name, a password, etc. To make sure that the chosen name is unique, one > needs to access the back-end database to check if it already exists. > > My solution right now is to extend "AbstractValidator<String>", and override > "onValidate(IValidatable<String> validatable)" to put the database-checking > logic in it. But the more I think about it, the more I felt it might be a > wrong solution. The problem (I think, not 100% sure) is that > "onValidate(IValidatable<String> validatable)" will be called during the > form validation process, even if this process goes through, I may still find > out later that the user chosen name has been taken when trying to save all > the user inputs (name, password, etc) to the database. This happens when > another user registers with the same name between the time the validation > process finished and the time I start persisting all inputs from the first > user to the database, > > So now I am trying to figure out another solution. Here is the idea: Instead > of putting the database-checking logic into the validation process, I simply > try to save all the user inputs into the database after receiving them. If > an unique key exception happens, I know that the user chosen name has been > taken. Now my questions are: > 1. where should I put this save-catch-exception logic? Is "Form.onSubmit()" > the right place to put it? > 2. After I catch an unique key exception. How can I show a feedback message > like "This name has already been taken" RIGHT NEXT to the user name input > field? (Just like what a typical Wicket Validator does though > "FeedbackPanel"). > > I am new to Wicket and your inputs and suggestions are greatly appreciated. > > Cheers > Paul > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org