[richfaces-issues] [JBoss JIRA] (RF-13107) rich:message is renderer even though it is in non-active switchable panel, causing JSF to fail with mallformedXML error

Lukáš Fryč (JIRA) jira-events at lists.jboss.org
Thu Aug 15 10:09:26 EDT 2013


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

Lukáš Fryč edited comment on RF-13107 at 8/15/13 10:08 AM:
-----------------------------------------------------------

Interesting part is here: RenderVisitContext is extended visit context which visits all components which are {{ajaxRendered}}.

We should REJECT visiting of subtrees which are not active: there is a interface for switchable panels called [{{boolean AbstractTogglePanelItemInterface#shouldProcess();}}|https://github.com/richfaces/richfaces/blob/5.0.0.Alpha1/framework/src/main/java/org/richfaces/ui/toggle/AbstractTogglePanelItemInterface.java#L41].

It's [implemented by AbstractTab|https://github.com/richfaces/richfaces/blob/5.0.0.Alpha1/framework/src/main/java/org/richfaces/ui/toggle/tabPanel/AbstractTab.java#L225].

I suggest to generalize this shouldProcess method to {{ActivableComponent}} or {{SwitchableComponent}} interface

----

Note that we can't use {{isRendered}}, because the component is marked as {{rendered=true}} event though it's not active.
                
      was (Author: lfryc):
    Interesting part is here: RenderVisitContext is extended visit context which visits all components which are {{ajaxRendered}}.

We should REJECT visiting of subtrees which are not active: there is a interface for switchable panels called [{{boolean AbstractTogglePanelItemInterface#shouldProcess();}}|https://github.com/richfaces/richfaces/blob/5.0.0.Alpha1/framework/src/main/java/org/richfaces/ui/toggle/AbstractTogglePanelItemInterface.java#L41].

It's [implemented by AbstractTab|https://github.com/richfaces/richfaces/blob/5.0.0.Alpha1/framework/src/main/java/org/richfaces/ui/toggle/tabPanel/AbstractTab.java#L225].

I suggest to generalize this shouldProcess method to {{ActivableComponent}} or {{SwitchableComponent}} interface
                  
> rich:message is renderer even though it is in non-active switchable panel, causing JSF to fail with mallformedXML error
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: RF-13107
>                 URL: https://issues.jboss.org/browse/RF-13107
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-validators
>    Affects Versions: 4.3.2
>            Reporter: Jonáš Trantina
>             Fix For: 4.3.4
>
>         Attachments: bug_reproducer.zip, reproducer_ajax.zip, rf13107ajax.png
>
>   Original Estimate: 1 hour, 30 minutes
>  Remaining Estimate: 1 hour, 30 minutes
>
> We have a form with a tabPanel component with two tabs A and B. In A there is an input and its rich:message in B the same plus a button that submits and re-renders B. When B is opened (thus A is not rendered) and the form is submitted and validation fails, then no message is shown.
> Note that:
> 1) switchType must be set to server to ensure the A's rich:message is really not on the page.
> 2) button in B must re-render only content of B
> This is only a specific scenario, the issue might occur also in other situations (e.g. global messages tag outside of tabPanel is not rendered).
> Please find the enclosed reproducer.
> Snipper:
> {code:xml}
>     <h:form>
>         <rich:tabPanel switchType="server">
>             <rich:tab>
>                 <h:inputText id="surname" value="#{richBean.surname}">
>                     <f:validateLength minimum="10"/>
>                 </h:inputText>
>                 <rich:message for="surname"/>
>             </rich:tab>
>             <rich:tab>
>                 <h:panelGroup id="content">
>                     <h:inputText id="name" value="#{richBean.name}">
>                         <f:validateLength minimum="6"/>
>                     </h:inputText>
>                     <rich:message for="name"/>
>                 </h:panelGroup>
>                 <a4j:commandButton value="Submit" execute="content" render="content" />
>             </rich:tab>
>         </rich:tabPanel>
>     </h:form>
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the richfaces-issues mailing list