Re: XHTML Form Tag

2004-10-25 Thread David Graham

--- Craig McClanahan [EMAIL PROTECTED] wrote:

snip
 
 If I sound a little irked about this, it's because I am ... it turns
 out that the generted JavaScript function names for Commons Validator
 1.1.3 (included with Struts 1.2.x) are different than the generated
 names in the version of Validator that was included in Struts 1.1, and
 it cost me more hours than I want to admit to figure out how to make
 Struts-Faces support client side validation with both versions.
 

The function names changed as a result of a bug report (duplicate names I
think).

David


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


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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



Re: XHTML Form Tag

2004-10-24 Thread Craig McClanahan
On Sun, 24 Oct 2004 21:57:20 -0500, Eddie Bush [EMAIL PROTECTED] wrote:
 Hola Amigos!
 
 AFAICT this is an issue only in the html:form tag.  If we were to introduce 
 something to trigger XHTML 1.1, couldn't we just lie to validator about the name 
 by telling it the ID instead of the name?  Would the resulting syntax emitted by 
 validator still be ok?

If you look at the static Javascript methods produced by Commons
Validator, you'll note the following code in each of the validation
methods (using just one of them for an example):

function validateFloatRange(form) {
...
var formName = form.getAttributeNode(name); 
...
}

In other words, the validators all assume that they can acquire the
name of the form (which is then used to look up the appropriate
validation rules) based on the name attribute of the form element
that is passed in as an argument.  This value is used to dynamically
calculate the name of a dynamic JavaScript function that implements
the specific tests for this particular form (which is part of the code
generated when you say html:javascript dynamic=true/).

Without a change to the validator code itself, then, the only way to
lie to it would be to have some sort of JavaScript that dynamically
added the expected form name as the name attribute of the form
element at runtime, perhaps in an onload handler on the body
element.  That would be such an egregious hack that I would not
support it.

If we want the validator to work with XHTML 1 1, instead of XHTML 1.0
Transitional, we've got a bit of work to do.  I suspect there is more
to it than just the name attribute on a form element (although
IMHO the XHTML spec did the world no favors when they dumped name on
the form element but kept it on the input elements -- that's just
grounds for confusion).

 
 Perhaps we should force XHTML 1.1 if html:html xhtml=true ... or html:xhtml/?  
 That seems kind of pushy to me though.  Maybe in 2.0.  For now, perhaps enable some 
 sort of flag (html:xhtml version=1.1/) to allow XHTML 1.1?  We could poke it in 
 pre-deprecated with note that it's going away in 2.0.

As far as I'm concerned, the HTML tags as a whole aren't going to be
part of 2.0 -- there are substantially better options (my proposal on
that topic is coming very soon).  But that die has yet to be cast by
the consensus of the developers.

In the mean time, we should explore a solution to this on the 1.x path
that does the right thing, instead of a hack.  I think it's reasonable
to aim for XHTML/1.1 (or XHTML/1.0 Strict) output being a viable
option.

 
 Anyhoo ... the Form tag could then check to see if it should emit XHTML (which it 
 already does) and which version.  If it's being asked to be 1.1 compliant, it could 
 lie and render 'name=name' as 'id=name'.
 

That's the *easy* part of the problem :-).  But yes, one could
certainly make the form tag smarter about what it emits based on which
version of XHTML you want.

 What do you all think?  I'm listening ...
 
 If the validator would require a change, I think I might be up for fixing that as 
 well.  It's pretty well written, so I don't see modification being too large an 
 issue.  Yes, I'm aware it probably needs to stay backward-compatible, but I think I 
 might can strategize a way to accomplish that.  I'd love to hear potential hurdles 
 you all see to accomplishing that though!
 

I think there'd be a different way to do this, but it's likely to
require a fair bit of surgery.  In particular, I do not believe it's
reasonable to require the rendered id attribute of a form element
to contain Struts's notion of a form name -- yet it seems that a lot
of code does depend on being able to use this value to look up the
correct set of validation rules.  If it is necessary to communicate
that to the client side, a new strategy is going to be necessary to
provide it (since we can't just add an arbitrary attribute without
violating the DTD).

If I sound a little irked about this, it's because I am ... it turns
out that the generted JavaScript function names for Commons Validator
1.1.3 (included with Struts 1.2.x) are different than the generated
names in the version of Validator that was included in Struts 1.1, and
it cost me more hours than I want to admit to figure out how to make
Struts-Faces support client side validation with both versions.

 Eddie

Craig

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



Re: XHTML Form Tag

2004-10-24 Thread Eddie Bush
First off, you don't sound irked, but it sounds as though you're well within 
your right to be!

remainder in-line ...
- Original Message - 
From: Craig McClanahan [EMAIL PROTECTED]
To: Struts Developers List [EMAIL PROTECTED]
Sent: Sunday, October 24, 2004 10:36 PM
Subject: Re: XHTML Form Tag


On Sun, 24 Oct 2004 21:57:20 -0500, Eddie Bush [EMAIL PROTECTED] wrote:
Hola Amigos!
AFAICT this is an issue only in the html:form tag.  If we were to 
introduce something to trigger XHTML 1.1, couldn't we just lie to 
validator about the name by telling it the ID instead of the name? 
Would the resulting syntax emitted by validator still be ok?

If you look at the static Javascript methods produced by Commons
Validator, you'll note the following code in each of the validation
methods (using just one of them for an example):
   function validateFloatRange(form) {
   ...
   var formName = form.getAttributeNode(name);
   ...
   }
In other words, the validators all assume that they can acquire the
name of the form (which is then used to look up the appropriate
validation rules) based on the name attribute of the form element
that is passed in as an argument.  This value is used to dynamically
calculate the name of a dynamic JavaScript function that implements
the specific tests for this particular form (which is part of the code
generated when you say html:javascript dynamic=true/).
I missed that one.  Eh ... ok.
Without a change to the validator code itself, then, the only way to
lie to it would be to have some sort of JavaScript that dynamically
added the expected form name as the name attribute of the form
element at runtime, perhaps in an onload handler on the body
element.  That would be such an egregious hack that I would not
support it.
I'll pass on that one too.  That's likely to break more than it fixes.
If we want the validator to work with XHTML 1 1, instead of XHTML 1.0
Transitional, we've got a bit of work to do.  I suspect there is more
to it than just the name attribute on a form element (although
IMHO the XHTML spec did the world no favors when they dumped name on
the form element but kept it on the input elements -- that's just
grounds for confusion).
Aye - I see that now.  Doesn't it seem rude to force folks into something 
like that?  Perhaps we should come up with a way to facilitate rendering 
either ... hrm ... maybe we could leverage XSLT here?  Nah, there's likely a 
better approach.  Perhaps we could somehow factor-out the 
form.getAttributeNode('name') to something that is smart enough to return 
the right thing -- or generate that on the fly by tossing in a function that 
returns the appropriate node depending on the specification.

Perhaps we should force XHTML 1.1 if html:html xhtml=true ... or 
html:xhtml/?  That seems kind of pushy to me though.  Maybe in 2.0. 
For now, perhaps enable some sort of flag (html:xhtml version=1.1/) 
to allow XHTML 1.1?  We could poke it in pre-deprecated with note that 
it's going away in 2.0.
As far as I'm concerned, the HTML tags as a whole aren't going to be
part of 2.0 -- there are substantially better options (my proposal on
that topic is coming very soon).  But that die has yet to be cast by
the consensus of the developers.
Well, you've peaked my attention.  You're saying this because you expect 
faces to replace them entirely?

In the mean time, we should explore a solution to this on the 1.x path
that does the right thing, instead of a hack.  I think it's reasonable
to aim for XHTML/1.1 (or XHTML/1.0 Strict) output being a viable
option.
I agree.  I was thinking perhaps it might be easy to do the right thing. 
Obviously I missed some things :-O which is why having you guys out there 
watching my back is so darned handy ;-)

Anyhoo ... the Form tag could then check to see if it should emit XHTML 
(which it already does) and which version.  If it's being asked to be 1.1 
compliant, it could lie and render 'name=name' as 'id=name'.

That's the *easy* part of the problem :-).  But yes, one could
certainly make the form tag smarter about what it emits based on which
version of XHTML you want.
What do you all think?  I'm listening ...
If the validator would require a change, I think I might be up for fixing 
that as well.  It's pretty well written, so I don't see modification 
being too large an issue.  Yes, I'm aware it probably needs to stay 
backward-compatible, but I think I might can strategize a way to 
accomplish that.  I'd love to hear potential hurdles you all see to 
accomplishing that though!

I think there'd be a different way to do this, but it's likely to
require a fair bit of surgery.  In particular, I do not believe it's
reasonable to require the rendered id attribute of a form element
to contain Struts's notion of a form name -- yet it seems that a lot
of code does depend on being able to use this value to look up the
correct set of validation rules.  If it is necessary to communicate
that to the client side, a new