myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Kienenberger" <mkien...@gmail.com>
Subject Re: XHTML Strict
Date Thu, 19 Apr 2007 14:01:21 GMT
I'm not disagreeing.   Open a vote thread on dev summarizing
everything on this thread and your reasoning.   Just be aware that the
JSF RI (which is considered to be the spec in code format) was the
originator of _id.


On 4/19/07, Rudi Steiner <rudi.steiner@googlemail.com> wrote:
> Hi Mike,
>
> if I understand it right, in the JSF-spec is wirtten, that the Impl
> must render HTML 4.01 and with an id starting with _ the output is not
> HTML 4.01.
>
> So I think to be Spec-conform the _ must be removed as a prefix.
>
> best regards,
> Rudi
>
> On 4/19/07, Mike Kienenberger <mkienenb@gmail.com> wrote:
> > _<var> is a long-standing convention that represents a framework-level
> > (not an application-level) variable.   Also _id is has been in use now
> > for a long enough time as the standard that most people are aware of
> > it.
> >
> > I'm not against changing it -- I'm just letting you know what the rational is.
> > Your best bet is probably to bring it up for a vote on the MyFaces dev
> > list after explaining the issue.
> >
> > Another possibility is to make UIViewRoot.UNIQUE_ID_PREFIX
> > configurable in the web.xml file as a parameter.    It's not marked
> > final in the java docs, so that should be allowed.  Then each user can
> > make their own determination if the default doesn't meet their needs.
> > For example, I'd probably consider making it "q" because I'd want it
> > to be as short as possible, Iand I'm unlikely to use q<number> as an
> > id value :-)
> >
> > This kind of brings up another issue.   It's not necessarily enough to
> > make the prefix identifier unique for your own application.  It'd also
> > have to be unique for any 3rd party components you might use that have
> > hardcoded ids (not really sure if this ever happens, but maybe it
> > does).
> >
> > static java.lang.String UNIQUE_ID_PREFIX
> >
> >
> > On 4/19/07, Simon Lessard <simon.lessard.3@gmail.com> wrote:
> > > Well, could use mf_id (mf standing for MyFaces), you cannot be sure at 100%
> > > that it will be unique, but neither can you with _id imho.
> > >
> > >
> > > On 4/18/07, Mike Kienenberger <mkienenb@gmail.com> wrote:
> > > > I don't see anything that prevents someone from changing the unique
> > > > prefix value, but it'd be difficult to come up with a short yet
> > > > guaranteed-to-be-unique alternative, considering that the spec only
> > > > allows characters, -, and _ as symbols.
> > > >
> > > > From the spec:
> > > >
> > > > 3.1.1 Component Identifiers
> > > > Every component may be named by a component identifier, which (if
> > > > utilized) must be
> > > > unique among the components that share a common naming container parent
in
> > > a
> > > > component tree. Component identifiers must conform to the following rules:
> > > >  They must start with a letter (as defined by the Character.isLetter()
> > > > method) or underscore ('_').
> > > >  Subsequent characters may be letters (as defined by the
> > > > Character.isLetter() method), digits as defined by the
> > > > Character.isDigit() method, dashes ('-'), and underscores ('_').
> > > > To minimize the size of responses generated by JavaServer Faces, it is
> > > > recommended
> > > > that component identifiers be as short as possible.
> > > > If a component has been given an identifier, it must be unique in the
> > > > namespace of
> > > > the closest ancestor to that component that is a NamingContainer (if any).
> > > > public String getId();
> > > > public void setId(String componentId);
> > > >
> > > > Also,
> > > >
> > > >
> > > http://java.sun.com/javaee/javaserverfaces/1.1/docs/renderkitdocs/
> > > >
> > > > General notes regarding the id attribute
> > > >
> > > >       All components, and therefore all tags for those components
> > > > support the id attribute. This attribute is optional. If not present
> > > > its value is autogenerated by the implementation and used for internal
> > > > purposes only. If present, an id attribute must not start with the
> > > > String listed as the value of the constant
> > > > UIViewRoot.UNIQUE_ID_PREFIX, and it must be unique within the scope of
> > > > the nearest component that is a NamingContainer.
> > > >
> > > >       All renderers must take the following action regarding theid
> > > > attribute: If the value returned fromcomponent.getId() is non-null and
> > > > does not start with UIViewRoot.UNIQUE_ID_PREFIX,
> > > > callcomponent.getClientId() and render the result as the value of the
> > > > id attribute in the markup for the component. See the javadoc
> > > > forcomponent.getClientId() for details, particularly note that the
> > > > Renderer has a chance to modify the client id before it is rendered.
> > > > If the component doesn't generate any markup elements, include the id
> > > > attribte on a "span" element that encloses the content for the
> > > > component.
> > > >
> > > >       In addition to any action already specified in the renderers,
> > > > all renderers for UIInput components must take the following action
> > > > regarding the id attribute: Callcomponent.getClientId() and render the
> > > > result as the value of the name attribute. This may cause some
> > > > renderers to have "id" and "name" attributes that have exactly the
> > > > same value.
> > > >
> > > > On 4/18/07, Simon Lessard <simon.lessard.3@gmail.com> wrote:
> > > > > Actually, that very specific error also gives me headache too, but
it
> > > come
> > > > > directly from the official API. See UIViewRoot.createUniqueId() and
> > > > > UIViewRoot.UNIQUE_ID_PREFIX.
> > > > >
> > > > > That being said, the spec does not forces the value of UNIQUE_ID_PREFIX
> > > > > (which is _id in the RI API) so I guess MyFaces could give it another,
> > > HTML
> > > > > 4.01 compliant value, and I sure hope so.
> > > > >
> > > > >
> > > http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/component/UIViewRoot.html
> > > > >
> > > http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/constant-values.html#javax.faces.component.UIViewRoot.UNIQUE_ID_PREFIX
> > > > >
> > > > >
> > > > > Regards,
> > > > >
> > > > > ~ Simon
> > > > >
> > > > >
> > > > >
> > > > > On 4/18/07, Rudi Steiner <rudi.steiner@googlemail.com> wrote:
> > > > > > On 4/16/07, Mike Kienenberger < mkienenb@gmail.com > wrote:
> > > > > > > From the JSF 1.1 spec:
> > > > > > > =============================
> > > > > > > 8.5 Standard HTML RenderKit
> > > > > > > Implementation
> > > > > > > To ensure application portability, all JSF implementations
are
> > > > > > > required to include
> > > > > > > support for a RenderKit, and the associated Renderers,
that meet the
> > > > > > > requirements defined in this section, to generate textual
markup
> > > that
> > > > > > > is compatible
> > > > > > > with HTML 4.01.
> > > > > > > =============================
> > > > > > >
> > > > > > > However, if there are changes we can make to MyFaces Core
that will
> > > > > > > improve xhtml support while still meeting the above requirement,
we
> > > > > > > can make them.
> > > > > > >
> > > > > > >
> > > > > > > On 4/16/07, Rudi Steiner < rudi.steiner@googlemail.com>
wrote:
> > > > > > > > Hi all,
> > > > > > > >
> > > > > > > > making some investigations on XHTML-comfomance fo
myFaces (without
> > > > > > > > Tomahawk) I found out, that the output of the basic
components,
> > > like
> > > > > > > > <h:form/>, <h:commandButton/> and so on
render valid XHTML but
> > > just
> > > > > > > > transitional (<!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0
> > > > > > > > Transitional//EN"
> > > > > > > > "
> > > > >
> > > http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">).
> > > > > > > >
> > > > > > > > The problem is, that our customer requires XHTML-Strict
(<!DOCTYPE
> > > > > > > > html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> > > > > > > >
> > > > > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">).
> > > > > > > >
> > > > > > > > Running the XHTML-output of a standard form against
the validator
> > > of
> > > > > > > > the W3C. I get some errormessages.
> > > > > > > >
> > > > > > > > The first one ist, that there is no name-attribute
in the defined
> > > DTD
> > > > > > > > for the form-element, but the <h:form/>-tag
renders it:
> > > > > > > >
> > > > > > > > <form id="_idJsp2" name="_idJsp2" method="post"
action=
> > > > > > > >
> > > > > > > > The second error is, that the hidden fields inserted
by the
> > > > > > > > JSF-implementation into the form are not enclosed
in a
> > > div-Element. If
> > > > > > > > I but my input-Elements inside the form in a <t:div/>,
this
> > > elements
> > > > > > > > are enclosed in a <div> and don't produce any
errors, but the
> > > hidden
> > > > > > > > fields inserted by myfaces are rendered after the
closing
> > > </div>-Tag.
> > > > > > > >
> > > > > > > > Has anyone an idea? Isn't it required by the JSF-Spec
to render
> > > > > > > > XHTML-Strict to be a standard conform implementation?
> > > > > > > >
> > > > > > > >
> > > > > > > > Best regards,
> > > > > > > > Rudi
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > > Hello Mike,
> > > > > >
> > > > > > I tested the generated output of a <h:form/> with the
following
> > > doctype
> > > > > >
> > > > > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> > > > > > "http://www.w3.org/TR/html4/loose.dtd">
> > > > > >
> > > > > > with the validator at http://validator.w3.org/ . The validator
> > > > > > generates a lot of errors, for example this one:
> > > > > > Line 20 column 11: value of attribute "ID" invalid: "_" cannot
start a
> > > > > name.
> > > > > >         <form id="_idJsp4" name="_idJsp4" method="post"
> > > > > action="/Pro/createPerson.jsf"
> > > > > >
> > > > > > Changeing the Doctype of the same markup to
> > > > > >
> > > > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> > > > > >
> > > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
> > > > > ">
> > > > > >
> > > > > > the markup passes validation.
> > > > > >
> > > > > > Does this mean, that myFaces is not Spec-conform, given that
the spec
> > > > > > says HTML 4.01 must be generated?
> > > > > >
> > > > > > Best regards,
> > > > > > Rudi
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> >
>

Mime
View raw message