>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 > >