much simpler

class UserEmailField extends TextField {
  public UserEmailField(String id, IModel model) {
    super(id, model);
    add(EmailAddressValidator.getInstance())
    add(UniqueValidator.unique(SystemUser.class, "email"));
   }
}

-igor

On Thu, May 7, 2009 at 11:43 PM, Christian Helmbold
<[email protected]> wrote:
>
> Hello,
>
> Wicket uses input validation on the presentation layer. This leads often to 
> code duplication and I'm looking for a way to avoid it.
>
> Example: I have a registration form where you fill in your first and last 
> name, password and so on. Every field has its restrictions like max length or 
> required. Registered users have a form for their personal information with 
> additional fields. The password can be changed on a seperate page.
>
> How can I avoid to double the programmtic configuration of the form fields? 
> To extract and reuse panels is not an option, because of the different 
> composition of the forms.
>
> a) I could create a subclass for every form field, but this would be a lot of 
> writing.
>
> b)I could create something like a FormFieldFactory:
>
> public class UserFormFieldFactory
> {
>    public static TextField createEmailField()
>    {
>        return new TextField("email")
>            .setRequired(true)
>            .add(EmailAddressValidator.getInstance())
>            .add(UniqueValidator.unique(SystemUser.class, "email"));
>    }
>
>    public static PasswordTextField createPasswordField()
>    {
>        ...
>    }
>    ...
> }
>
> c) ?
>
> How do you avoid code duplication on forms?
>
> Regards,
> Christian
>
>
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to