>From: "Richard Eggert" <[EMAIL PROTECTED]>
>
> I'm using Clay with HTML templates in an application on which I am working.
> In
> several cases, I refer to managed bean properties directly in my template
> text
> (e.g., <p>#{mybean.prop}</p>). I recently noticed MyFaces' ReducedHTMLParser
> throwing exceptions about malformed HTML. Not finding any problems in my HTML
> template itself, I looked at the generated page source and discovered that in
> cases where a managed bean property contained special characters (in my case,
> less-than and greater-than signs), Clay is apparently not escaping them
> before
> rendering them.
>
> Is this a bug in Clay or a "feature" (or a configuration problem on my part)?
>
This is a "feature" :-). The way that Clay works is that any markup in the
template that doesn't map to a JSF component is treated as "verbatim".
If the markup contains a value binding expression, it's evaluated but there
is not an attempt to identify (parse out) a inline expression within the markup.
In the example above, the value expression would equate to the following:
ValueBinding vb =
FacesContext.getCurrentInstance().createValueBinding("<p>#{mybean.prop}</p>");
Something you might try is wrapping these expressions is a span tag
mapped to an outputText component.
Consider:
<p><span jsfid="outputText" escape="true">#{mybean.prop}</span></p>).
> Is there any workaround aside from putting calls to
> org.apache.commons.lang.StringEscapeUtils.escapeHtml() in every managed bean
> "getter" method that returns a String or wrapping all references in >
> escape="true">?
>
> I'm using Shale v1.0.4.
>
>
> Rich Eggert
> Member of Technical Staff
> Proteus Technologies, LLC
> http://www.proteus-technologies.com
Gary
>
>