Re: Select box and validation

2008-03-25 Thread Julian Wood
So to finish this thread, the workaround is to create your own  
component, copy the entire Select component source, and make one change:


void beginRender(MarkupWriter writer) {
writer.element(select, name, getControlName(), id,  
getClientId());

_validate.render(writer);
_resources.renderInformalParameters(writer);
}

That _validate.render(writer) is new. Is this the recommended way for  
extending components, which I know we're not supposed to (and  
can't) do?


In any case, I feel this behaviour should at least be allowed by the  
Select component, if not made the default, without having to resort  
to this solution.


I've filed a JIRA:

https://issues.apache.org/jira/browse/TAPESTRY-2295

J

On 24-Mar-08, at 3:32 PM, Julian Wood wrote:


The situation is this:

I have a select box in a form, and I want to make it required.

This is simple enough, but the blank option disappears when the  
required validation is applied, client-side validation is not  
performed, and is indeed not needed, because there are no blank  
values. As a corollary, the first option is always selected by  
default upon entry into the form.


The problem with this is that users have a tendency to skip these  
fields which are prepopulated, something which when having a blank  
option does not happen, so this is not the behaviour that I want.


So to change this, I added t:blankoption=always to the select  
field, to restore the blank option. But now, I am bitten by the  
previous conclusion that client-side validation is not performed on  
these fields (in fact there is no client-side validation at all,  
ever - the paradigm explained here is used to cover the required  
case). So when combined with other fields which do have client-side  
validation, this looks quite disjointed.


So I'm trying to figure out the best way to accomplish what I want,  
which is a select box with a blank option, which has a client-side  
required validation inline with the other client-side required  
validations.


All that is required is the contribution to the Tapestry.validate 
(...)  javascript code snippet by the select field, to get it to  
behave as wanted, but I can't figure out the proper mechanism for  
accomplishing this. I'm sure it's something very simple, somewhere,  
but what?


I can see how it is added -  
org.apache.tapestry.internal.services.ClientBehaviorSupportImpl#addVal 
idation, coming from org.apache.tapestry.validator.Required#render  
but why is render called for a TextField with the 'required'  
validator, but not from a Select field?


Anyway, I'm still digging, but maybe someone has a hint. Thanks,

J



-
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]



Select box and validation

2008-03-24 Thread Julian Wood

The situation is this:

I have a select box in a form, and I want to make it required.

This is simple enough, but the blank option disappears when the  
required validation is applied, client-side validation is not  
performed, and is indeed not needed, because there are no blank  
values. As a corollary, the first option is always selected by default  
upon entry into the form.


The problem with this is that users have a tendency to skip these  
fields which are prepopulated, something which when having a blank  
option does not happen, so this is not the behaviour that I want.


So to change this, I added t:blankoption=always to the select field,  
to restore the blank option. But now, I am bitten by the previous  
conclusion that client-side validation is not performed on these  
fields (in fact there is no client-side validation at all, ever - the  
paradigm explained here is used to cover the required case). So when  
combined with other fields which do have client-side validation, this  
looks quite disjointed.


So I'm trying to figure out the best way to accomplish what I want,  
which is a select box with a blank option, which has a client-side  
required validation inline with the other client-side required  
validations.


All that is required is the contribution to the  
Tapestry.validate(...)  javascript code snippet by the select field,  
to get it to behave as wanted, but I can't figure out the proper  
mechanism for accomplishing this. I'm sure it's something very simple,  
somewhere, but what?


I can see how it is added -  
org 
.apache 
.tapestry.internal.services.ClientBehaviorSupportImpl#addValidation,  
coming from org.apache.tapestry.validator.Required#render but why is  
render called for a TextField with the 'required' validator, but not  
from a Select field?


Anyway, I'm still digging, but maybe someone has a hint. Thanks,

J



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]