Re: [T5.1] select with required validation

2010-05-06 Thread paha

Thank you all for your answers. the User object is valid, because everything
i need when submitting the form is userID to save the data. that is why i'm
setting selected id to constructed object. why toString() returns .
Because it was used to display formatted output of surname and name
somewhere in grid or beandisplay. it's not correct, i know, but it saved me
some time in past when i was testing tapestry functionality. 
i will not bother anyway with custom validator especially now, when i know
the reason. i just abandoned using toString as the source for meaningful
information. but i still wanted to know, if it is undesired behavior, to
check object.toString for empty. you confirmed this (although Howard's
opinion is decisive)
-- 
View this message in context: 
http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28470182.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



[T5.1] select with required validation

2010-05-05 Thread paha

Hi, it must be again some misunderstanding from my side. I have a form and
select
t:form
t:select t:id=supervisor value=company?.supervisor validate=required
  encoder=supervisorEncoder model=supervisorModel
  blankOption=always/
/t:form

in OnSubmit i see that all other field values of the form (and also some
selects but with Enum as Model) get applied to company object except for
this select. AS SOON AS i remove
validate=required it's get applied too. Sure i can do server-side
validation to check if the object is not set, but is it an expected
behavior?

the supervisorEncoder is defined as 

public class UserValueEncoder implements ValueEncoder {
@Override
public String toClient(Object user) {
return ((User) user).getId().toString();
}

@Override
public Object toValue(String id) {
return StringUtils.isNotBlank(id)
? new User().setId(Integer.parseInt(id))
: null;
}
}

again, if validate=required is omitted, everything works as expected. but
if not, selected value seems to never got submitted firing required error
message
-- 
View this message in context: 
http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28461777.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread Pablo dos Reis
Try verify if the 'user' is null in the toClient method .




2010/5/5 paha ch_pa...@yahoo.com


 Hi, it must be again some misunderstanding from my side. I have a form and
 select
 t:form
 t:select t:id=supervisor value=company?.supervisor validate=required
  encoder=supervisorEncoder model=supervisorModel
  blankOption=always/
 /t:form

 in OnSubmit i see that all other field values of the form (and also some
 selects but with Enum as Model) get applied to company object except for
 this select. AS SOON AS i remove
 validate=required it's get applied too. Sure i can do server-side
 validation to check if the object is not set, but is it an expected
 behavior?

 the supervisorEncoder is defined as

 public class UserValueEncoder implements ValueEncoder {
@Override
public String toClient(Object user) {
return ((User) user).getId().toString();
}

@Override
public Object toValue(String id) {
return StringUtils.isNotBlank(id)
? new User().setId(Integer.parseInt(id))
: null;
}
 }

 again, if validate=required is omitted, everything works as expected. but
 if not, selected value seems to never got submitted firing required error
 message
 --
 View this message in context:
 http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28461777.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org




-- 
Pablo Henrique dos Reis


Re: [T5.1] select with required validation

2010-05-05 Thread paha


Pablo dos Reis wrote:
 
 Try verify if the 'user' is null in the toClient method .
 
no, it is not null. as i said, the properly selected value gets never
submitted or doesn't survive validation (don't know what is really going on
and in which order) - but encoder gets correct value and returns correct
object. and as soon as i remove validation, everything works like a charm.
-- 
View this message in context: 
http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28462190.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread Thiago H. de Paula Figueiredo

On Wed, 05 May 2010 12:01:26 -0300, paha ch_pa...@yahoo.com wrote:


no, it is not null. as i said, the properly selected value gets never
submitted or doesn't survive validation (don't know what is really going  
on and in which order) - but encoder gets correct value and returns  
correct
object. and as soon as i remove validation, everything works like a  
charm.


Tapestry form field components don't update the edited property when a  
validation error ocurrs.


--
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor

Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread paha


Thiago H. de Paula Figueiredo wrote:
 
 Tapestry form field components don't update the edited property when a  
 validation error ocurrs
 
thank you, you gave me some idea and i found a reason. my User class
overrides toString returning name+surname. when the valueencoder runs
toObject method, a User-Object with only id set gets created. so the
toString of this object returns  and the object is considered empty even
if it is not null!!! if i set either name or surname property to some dummy
value, things work again. Is it expected behavior? For me this is at least
surprising. there must be a check somewhere like obj == null ||
isEmpty(obj.toString()) . of course i will check toString to never return
empty string 


-- 
View this message in context: 
http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28462691.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread Thiago H. de Paula Figueiredo

On Wed, 05 May 2010 12:45:20 -0300, paha ch_pa...@yahoo.com wrote:


thank you, you gave me some idea and i found a reason. my User class
overrides toString returning name+surname. when the valueencoder runs
toObject method, a User-Object with only id set gets created. so the
toString of this object returns  and the object is considered empty  
even if it is not null!!!


You should provide your own ValueEncoder that doesn't rely on toString().

if i set either name or surname property to some dummy value, things  
work again. Is it expected behavior?


Tapestry's Required validator treats empty string as null.

--
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor

Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread paha


Thiago H. de Paula Figueiredo wrote:
 
 You should provide your own ValueEncoder that doesn't rely on toString().
 
well if you've read my first post, you could see that my ValueEncoder
doesn't rely on toString(). It is  rather Tapestry Validator, that runs
toString on  User object and assumes it is null, when it is not.


Thiago H. de Paula Figueiredo wrote:
 
 if i set either name or surname property to some dummy value, things  
 work again. Is it expected behavior?
 
 Tapestry's Required validator treats empty string as null.
 
the problem is, the object returned from valueencoder is not a string and it
is not empty. i don't know the internals, i cannot criticize. imho objects
returned from valuencoder schould be only checked against null unless they
are really strings.

unfortunately, there is no hint in ValueEncoder, that a toValue method must
return an object , whose toString() method returns not null. in contrary it
states the corresponding entity, or null if not found. in my case User
instance with correct id is an corresponding entity, but it is treated as
not found because of toString 
-- 
View this message in context: 
http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28466005.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread Josh Canfield
Your problem is definitely with the Required validator, although it's
a little suspect that a valid User.toString() returns an empty string
or that you are building incomplete entities in the ValueEncoder. In
my opinion the validator should not be returning an error.

 public void validate(Field field, Void constraintValue,
MessageFormatter formatter, Object value)
throws ValidationException
{
if (value == null || InternalUtils.isBlank(value.toString()))
throw new ValidationException(buildMessage(formatter, field));
}

I'm not sure why value.toString() is called. The class is documented
as A validator that enforces that the value is not null and not the
empty string. Perhaps it should be checking that value is an instance
of String before testing for blank?

A workaround (way around) would be to create your own implementation
of the Required validator. Perhaps a NotNull validator that only
checks for null? Maybe one already exists out there but I didn't look.

Josh

On Wed, May 5, 2010 at 1:22 PM, paha ch_pa...@yahoo.com wrote:


 Thiago H. de Paula Figueiredo wrote:

 You should provide your own ValueEncoder that doesn't rely on toString().

 well if you've read my first post, you could see that my ValueEncoder
 doesn't rely on toString(). It is  rather Tapestry Validator, that runs
 toString on  User object and assumes it is null, when it is not.


 Thiago H. de Paula Figueiredo wrote:

 if i set either name or surname property to some dummy value, things
 work again. Is it expected behavior?

 Tapestry's Required validator treats empty string as null.

 the problem is, the object returned from valueencoder is not a string and it
 is not empty. i don't know the internals, i cannot criticize. imho objects
 returned from valuencoder schould be only checked against null unless they
 are really strings.

 unfortunately, there is no hint in ValueEncoder, that a toValue method must
 return an object , whose toString() method returns not null. in contrary it
 states the corresponding entity, or null if not found. in my case User
 instance with correct id is an corresponding entity, but it is treated as
 not found because of toString
 --
 View this message in context: 
 http://old.nabble.com/-T5.1--select-with-required-validation-tp28461777p28466005.html
 Sent from the Tapestry - User mailing list archive at Nabble.com.


 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





-- 
--
http://www.bodylabgym.com - a private, by appointment only, one-on-one
health and fitness facility.
--
http://www.ectransition.com - Quality Electronic Cigarettes at a
reasonable price!
--
TheDailyTube.com. Sign up and get the best new videos on the internet
delivered fresh to your inbox.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [T5.1] select with required validation

2010-05-05 Thread Thiago H. de Paula Figueiredo
On Wed, 05 May 2010 18:48:47 -0300, Josh Canfield joshcanfi...@gmail.com  
wrote:



Your problem is definitely with the Required validator, although it's
a little suspect that a valid User.toString() returns an empty string


That's strange for me too.


I'm not sure why value.toString() is called. The class is documented
as A validator that enforces that the value is not null and not the
empty string. Perhaps it should be checking that value is an instance
of String before testing for blank?


It looks like a slight bug for me.


A workaround (way around) would be to create your own implementation
of the Required validator. Perhaps a NotNull validator that only
checks for null? Maybe one already exists out there but I didn't look.


Implementing one is quite easy.

--
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor

Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org