Hi Simon,

i've created a jira issue --> MYFACES-1897, but i don't found the "licensed under the ASF" checkbox to tick them. Maybe you can do it for me, if you want or can or ... ;)

bb, Jörg

[EMAIL PROTECTED] schrieb:
[EMAIL PROTECTED] schrieb:
Hi ,
i tried to run this code:

<t:buffer into="#{myBuffer}">
    <h:outputText value="#{something}"/>
    <h:outputText value="#{somethingWithUnderline}"
                      style="text-decoration:underline"/>
    <h:outputText value="#{somethingelse}"/>
</t:buffer>

<h:selectOneRadio ... >
    <f:selectItem itemValue="1" itemLabel="#{myBuffer}" escape="false">
</h:selectOneRadio>

but my buffercontent is escaped by the selectOnRadio renderer. I take a look inside the selectItem component and i see there is a member named escape.
Weird.

There is no escape property documented for SelectItem here:
 http://java.sun.com/javaee/javaserverfaces/1.1/docs/api/index.html

And there is no escape property documented for SelectItem here:
 http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html

But there is one here:
 http://java.sun.com/javaee/5/docs/api/

There is none implemented for myfaces core 1.1.x, but it is implemented in core 1.2.x

Dennis Byrne added this attribute in r415043 with the message "added ... for binary compatibility with the RI". So it would appear to be a case where Sun's implementation was not compliant with the specification (how the hell did it ever pass the TCK with an extra method in the API?!), and myfaces was then tweaked to add the extra method. Given that history, it's no big surprise if the renderers were not updated to match.

And (no surprise) it appears that the jee5 docs are being generated from Sun's codebase, and therefore are picking up Sun's incompatibilities and declaring them as "the spec". Sigh.

But the HtmlRadioRendererBase.renderGroupOrItemRadio() method does not fetch the escape value of the selectItem and the HtmlRenderUtils.renderLabel method has not a parameter for the escape attribute.

Same problem is by using the <t:selectOneRadio ... > component.

To fix the problem i've done this:

HtmlRadioRendererBase.renderGroupOrItemRadio() Line ~199 :

// label element after the input
boolean componentDisabled = isDisabled(facesContext, selectOne);
boolean disabled = (componentDisabled || itemDisabled);
boolean escape = selectItem.isEscape();

HtmlRendererUtils.renderLabel(writer, selectOne, itemId,
                selectItem.getLabel(), disabled,escape);

HtmlRendererUtils.renderLabel() Line ~1352:

public static void renderLabel(ResponseWriter writer, UIComponent component, String forClientId,String labelValue, boolean disabled) throws IOException {
renderLabel(writer, component, forClientId, labelValue, disabled, true);
}


/**
 * Renders a label HTML element
 */
public static void renderLabel(ResponseWriter writer, UIComponent
component, String forClientId,String labelValue, boolean disabled, boolean escape) throws IOException {

...

if ((labelValue != null) && (labelValue.length() > 0)) {
    writer.write(HTML.NBSP_ENTITY);
    if (escape) {
        writer.writeText(labelValue, null);
    } else {
        writer.write(labelValue);
    }
}
...

maybe it helps someone.

I guess that for compatibility with the RI we should implement this too.

Could you please create a JIRA issue for this? If you are happy for your patch to be included in myfaces, please remember to tick the "licensed under the ASF" checkbox..

Thanks,
Simon




Reply via email to