[jsr-314-open-mirror] [jsr-314-open] [490-XmlViews] Chapter 11: The JSF XML View Syntax
Andy Schwartz
andy.schwartz at oracle.com
Wed Oct 27 17:09:29 EDT 2010
On 10/27/10 12:29 AM, Cay Horstmann wrote:
> Sure, that's great. Except, it should probably be f:doctype since it
> is not HTML specific.
>
I think f:doctype works. Though we do seem to be blurring the lines a
bit between the h: and f: tag libraries. The old JSP taglib doc for h:
says:
> This tag library contains JavaServer Faces component tags for all
> UIComponent + HTML RenderKit Renderer combinations defined in the
> JavaServer Faces Specification.
And doc for the f: taglib:
> The core JavaServer Faces custom actions that are independent of any
> particular RenderKit.
These descriptions seem to be accurate for 1.2. As of 2.0 we have
started adding tags into the f: taglib that actually do have
corresponding Renderers (or ClientBehaviorRenderers) in the HTML_BASIC
standard render kit. (I am thinking of f:viewParam and f:ajax.)
Would f:doctype be similar to f:viewParam in that we would introduce a
new component + Renderer in the HTML_BASIC render kit?
> Or, if we cared about consistency with JSP, we could use the same
> attributes as jsp:output:
>
> <f:doctype omit-xml-declaration="no"
> doctype-root-element="html"
> doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
> doctype-system="http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
>
>
Ah, good old jsp:output. The highlight of my day was reviewing this
reference doc:
http://java.sun.com/products/jsp/syntax/2.0/syntaxref2022.html
My favorite part:
> The JSP container will not include the XML declaration in the output
> when either of the following is true:
>
> You set the omit-xml-declaration attribute of the jsp:output element
> to either true or yes.
> You have a jsp:root element in your JSP document, and you do not
> specify omit-xml-declaration="false" in jsp:output.
>
> The JSP container will include the XML declaration in the output when
> either of the following is true:
>
> You set the omit-xml-declaration attribute of the jsp:output element
> to either false or no.
> You do not have a jsp:root action in your JSP document, and you do not
> specify the omit-xml-declaration attribute in jsp:output.
I had the same reaction to this that Bart Simpson had to "Don't do what
Donnie Don't Does": They could have made this clearer. [1] :-)
If we do follow a jsp:output-like solution, I think that we would want to:
- Separate out the XML declaration part. This doesn't seem to make
sense on an f:doctype tag.
- Massage the attribute names to be more in line with JSF naming
conventions, eg. "rootElement", "public", "system"
The XML declaration part is interesting on its own. When running in the
new XML/JSPX processing modes, we do not want to pass this through by
default - ie. the XML declaration pertains to the Facelets document
itself, not to the generated content. However, when rendering
text/xhtml content, we do want to render an XML declaration so that our
rendered document will be valid XML. Rather than requiring the page
author to provide a hint to control this behavior (like jsp:output's
omit-xml-declaration attribute), I would prefer that the
RenderKit/ResponseWriter detect this case and handle it in a transparent
manner. Does this sound reasonable/doable?
Andy
[1] http://www.snpp.com/episodes/1F06.html
More information about the jsr-314-open-mirror
mailing list