[richfaces-issues] [JBoss JIRA] (RF-13739) Placeholder in collapsibleSubTable template

Michal Petrov (JIRA) issues at jboss.org
Fri Jul 25 08:59:31 EDT 2014


    [ https://issues.jboss.org/browse/RF-13739?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12988011#comment-12988011 ] 

Michal Petrov commented on RF-13739:
------------------------------------

Hmm, something's weird with the renderers.

The placeholder element is getting rendered twice: once in its usual space and once just before its parent.

{code}
<span id="form:placeholder">…</span>
<form id="form" name="form" method="post" …>
…
    <input type="text" name="input1" id="input1" class="rf-plhdr customPlaceholderClass">
     …
    <input type="text" name="input3" id="input3" class="rf-plhdr customPlaceholderClass">
    <span id="form:placeholder">…</span>
</form>
{code}

RF-12589 introduced a workaround for  {{AbstractPlaceholder}} which makes the placeholder render before its parent, but that should only happen if the parent is {{<h:inputText>}} or the like. In the end there should be only one element (works correctly in 4.3.x showcase).

{{PlaceholderRendererBase}}:
{code}
    @Override
    public void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
        AbstractPlaceholder placeholder = (AbstractPlaceholder) component;

        // skip direct rendering for nested usage (workaround for RF-12589)
        if (placeholder.getSelector() == null || placeholder.getSelector().isEmpty()) {
            return;
        }
    }
{code}

I assume this is what makes sure only one element is rendered but the method is never called because it is overridden by doEncodeEnd of  {{PlaceholderRenderer}}. There have been some changes with encodeEnd and doEncodeEnd in 4.5, looks like this was overlooked.

> Placeholder in collapsibleSubTable template
> -------------------------------------------
>
>                 Key: RF-13739
>                 URL: https://issues.jboss.org/browse/RF-13739
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-misc
>    Affects Versions: 4.5.0.Alpha3
>         Environment:     RichFaces 4.5.0-SNAPSHOT
>     Metamer 4.5.0-SNAPSHOT
>     Mojarra 2.2.6-jbossorg-4
>     JBoss AS 8.1.0.Final
>     Java(TM) SE Runtime Environment 1.7.0_25-b15 @ Linux
>     Firefox 30.0 @ Linux x86_64
>            Reporter: Matej Novotny
>            Assignee: Michal Petrov
>              Labels: needs-qe
>             Fix For: 4.5.0.Beta1
>
>
> Placeholder selector set to empty string ({{selector=""}}) does not  work when nested inside richCollapsibleSubTable template. The expected result is that all inputs will contains the placeholder text, however none of them does. If you set selector to a specific ID, the test succeeds.
> This only happens when you attach the placeholder to {{<textarea>}} or {{<input>}}.
> For both cases we have facelets and tests in Metamer and [Jenkins job|https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/RichFaces/view/4.5/job/richfaces-4.5-metamer-ftest--server-compatibility--misc/] which runs the tests.
> Link to [facelet|https://github.com/richfaces/richfaces-qa/blob/master/metamer/application/src/main/webapp/components/richPlaceholder/textarea.xhtml] and [test|https://github.com/richfaces/richfaces-qa/blob/master/metamer/ftest/src/test/java/org/richfaces/tests/metamer/ftest/richPlaceholder/TestPlaceholderWithTextarea.java#L65] for textarea.
> Link to [facelet|https://github.com/richfaces/richfaces-qa/blob/master/metamer/application/src/main/webapp/components/richPlaceholder/input.xhtml] and [test|https://github.com/richfaces/richfaces-qa/blob/master/metamer/ftest/src/test/java/org/richfaces/tests/metamer/ftest/richPlaceholder/TestPlaceholderWithInput.java#L65] for input.



--
This message was sent by Atlassian JIRA
(v6.2.6#6264)



More information about the richfaces-issues mailing list