Yeah, that's one reason I wanted this issue to get some exposure.
What's being asked for (and, in fairness, is described in the issue
although I missed it initially) is completely "CSS selector safe"
markup id's. So, in your example, at least '>', '.', and '*' would
have to be substituted because they have special meaning in a CSS
selector. About half of the remaining chars are not valid in an HTML
id, but that's a separate issue.
So this is really about the contract of getMarkupId() and what
constraints it should enforce on the strings it returns. I've always
been comfortable with the idea that it's a user's responsibility not
to use invalid HTML id characters in a component id since it's the
user's choice to call setOutputMarkupId(true) and it's easy to
understand how component id's relate to markup id's. Of course,
Wicket should add only very safe characters when it manipulates the
id for uniqueness, etc. but I'm not sure if it should do more than that.
I don't know about 1.3, but in 1.2 getMarkupId() doesn't promise to
return a valid HTML id -- much less one without CSS selector chars --
and it doesn't seem like this has been a problem for many, if any,
users.
It seems like this issue breaks down into a few specific questions:
1) Should or does getMarkupId() return valid HTML id's?
2) Should getMarkupId() return id's that can be used without escaping
as an element id in a CSS selector?
3) Does the answer to 2 depend on the answer to 1 or is it reasonable
to provide convenience for CSS contexts even though validity is not
guaranteed?
Sorry for all the questions and no answers, but my main opposition to
this was based on the fact that it was filed as a bug. When
considered as an enhancement, I can appreciate the convenience. But I
also think the current behavior (as of 1.2, anyway) has the advantage
of being very simple. If you're going to call setOutputMarkupId
(true), then don't use invalid HTML id chars in your component id's.
And if you need to use markup id's in a CSS selector context, it's
easy enough to escape them yourself -- either on the client or server.
-Ryan
On Sep 27, 2007, at 2:24 AM, Johan Compagner wrote:
its not just about the dot
it als this starting with an number that we already did fix by
testing it
and then prepending a letter.
I am just curious if there are more of these kinds of things
new Component("1_-%$&.,2<>*")
what markup id is then generated? Is that one valid?
Ofcourse this is a bit stupid example but just as an example..
johan
On 9/27/07, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
On 9/27/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
we shouldn't generate illegal id's no matter what a developer
gives us
as
there componentid
or is that already taken care off? (before this change?)
It is not illegal to put a dot in a markup id!
Martijn
--
Buy Wicket in Action: http://manning.com/dashorst
Apache Wicket 1.3.0-beta3 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.0-beta3/