struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From JOSE L MARTINEZ-AVIAL <jlm...@gmail.com>
Subject Re: Translation of fieldName in annotated validations
Date Wed, 25 Sep 2013 12:54:42 GMT
I have javascript controls for the client-side validation, but we also want
to implement server-side validation. I'm not criticizing the framework, I
really really like it. I'm just wondering if the validations could be a
little more flexible to allow reusing message properties.


2013/9/25 Chris <christalkto@yahoo.fr>

> Hello,
>
> It is only a proposal, but you might also use JavaScript controls.
> The same JavaScript Code could be use with several forms or pages.
>
> But you can also prefer using the mapping field to Java Beans. ( or both )
>
>
> Regards
>
> Chris
>
>
> ________________________________
>  De : JOSE L MARTINEZ-AVIAL <jlmagc@gmail.com>
> À : Struts Users Mailing List <user@struts.apache.org>
> Envoyé le : Mercredi 25 septembre 2013 12h51
> Objet : Re: Translation of fieldName in annotated validations
>
>
> Yes, what I would like is to define a message for each validator that could
> be reused with any field just by having the fieldname translated. Let's say
> I have a form to create an user, with fields First name, Last name and
> Email, where all the fields are required. I would define the following
> properties for the labels of the fields
>
> firstName = First name
> lastName = Last name
> email = E-mail
>
> The field is going to be mapped to a bean "user" in the action. In that
> case, the messages used for the validation would need to be as follows:
>
> validation-error.mandatory        = The field ${getText(fieldName)} is
> mandatory
> user.firstName = First name
> user.lastName = Last name
> user.email = E-mail
>
> So I need to duplicate the messages. If I have another form, let's say
> person, with the same fields, I would also need to create
>
> person.firstName = First name
> person.lastName = Last name
> person..email = E-mail
>
> I have to duplicate the message keys for any bean name I want to use, since
> they can not be reused. It complicates the maintenance of the code. and the
> reason for this is that there is no other way to pass an argument to the
> key (which is actually an OGNL expression) that to use an attribute already
> defined in the annotation, which is not very flexible. I don't know if it
> would be possible to add an attribute keyValues to the annotation, which
> would be an String array. Those values  could be used when evaluating the
> key, giving more flexibility to the programmer.
>
> What do you think?
> JL
>
> 2013/9/25 Lukasz Lenart <lukaszlenart@apache.org>
>
> > 2013/9/25 JOSE L MARTINEZ-AVIAL <jlmagc@gmail.com>:
> > > Hello,
> > >    I have an Action that receives a parameter *email *on a bean
> *event*.
> > So
> > > basically the parameter is send to the server with name "*
> > > event.email=jlmagc<at>gmail.com*"'. The bean and the parameter are
> > created
> > > correctly, so this part works ok. Now I want to validate the input
> using
> > > annotations. In order to do that I'm using the following annotation at
> > the
> > > Action level:
> > >
> > > @Validations(
> > >         requiredStrings =
> > >             {@RequiredStringValidator(type = ValidatorType.SIMPLE,
> > >                     fieldName = "event.email", key =
> > > "validation-error.mandatory")}
> > >         )
> > >
> > >
> > > and in the package.properties I have the following definition
> > > validation-error.mandatory        = The field ${getText(fieldName)} is
> > > mandatory
> > > event.email = e-mail
> > >
> > > With this setup, if the parameter event.email is empty or not present,
> > the
> > > validator evaluates the expression and returns to the user the
> following
> > > message:
> > > "The field e-mail is mandatory".
> > >
> > > It evaluates the key as an OGNL expression, retrieves the fieldName,
> > > evaluates the getTest, and elaborate the sentence correctly. So it
> works
> > ok
> > >
> > > The issue here is that this forces me to define a property
> "event.email"
> > > since the attribute fieldName in the annotation is used both to locate
> > the
> > > field that needs validation, and as argument for the getText. Is it
> > > possible to split that those two roles, so I can user my already
> existing
> > > property "email", instead of having to duplicate it as "event.email"?
> >
> > I am not sure what you want to achieve? Maybe some example?
> >
> > You can always use a different key i.e. validation.error.email.required
> > and then
> > validation.error.email.required = The field e-mail is required!
> >
> > What you presented is the situation when you want to use exactly the
> > same validator for many fields without specifying key or with the same
> > key - it simplifies but isn't flexible ;-)
> >
> >
> > Regards
> > --
> > Łukasz
> > + 48 606 323 122 http://www.lenart.org.pl/
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message