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

_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to