[
https://issues.jboss.org/browse/RF-13216?page=com.atlassian.jira.plugin.s...
]
Brian Leathem commented on RF-13216:
------------------------------------
The reported use case of hiding a popupPanel using the _rendered_ attribute and an ajax
call initiated from withtin the popupPanel can be resolved with the following code
sample:
{code}
<h:form>
<a4j:outputPanel id="myPanel">
<rich:popupPanel domElementAttachment="parent"
show="true" rendered="#{test.showPopup}">
<a4j:commandButton action="#{test.switchPopup()}"
value="switch off" render="myPanel"/>
</rich:popupPanel>
<a4j:commandButton action="#{test.switchPopup()}"
value="switch on" render="myPanel"/>
</a4j:outputPanel>
</h:form>
{code}
Some key points to remember:
# Neither _domElementAttachment="body"_ nor
_domElementAttachment="form"_ work, as the popupPanel is re-located in the DOM,
thus is no longer a child of outputPanel and does not participate in the ajax render.
# There is no nested form in the popupPanel. Nested forms are not supported in HTML,
likewise they are not supported in JSF.
# The recommended means of showing/hiding a popupPanel is to leave it rendered, and
show/hide it via the javascript API.
IMO the default value for the _domElementAttachment_ attribute should be _parent_, with an
override as required for exceptional circumstances. If this were the case, the popupPanel
would behave as other JSF panel components, and this issue would not have arisen.
PoupPanel doesn't disappear when rendered="false" and
rerender it.
------------------------------------------------------------------
Key: RF-13216
URL:
https://issues.jboss.org/browse/RF-13216
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: component-output
Affects Versions: 4.3.3
Reporter: Takayuki Konishi
Labels: gss
Attachments: rf3_3_4-modalpanel.zip, rf4_3_3-popuppanel.zip
If you use the richfaces popupPanel in the default domElementAttachment="body"
mode it will not disappear under specific conditions.
{code:xml}
<h:body title="page 1">
<a4j:outputPanel id="myPanel">
<rich:popupPanel domElementAttachment="body"
show="true" rendered="#{test.showPopup}">
<h:form>
<a4j:commandButton action="#{test.switchPopup()}"
value="switch off" render="myPanel"/>
</h:form>
</rich:popupPanel>
<h:form>
<a4j:commandButton action="#{test.switchPopup()}"
value="switch on" render="myPanel"/>
</h:form>
</a4j:outputPanel>
</h:body>
{code}
In Richfaces 3.3.x, on the other hand, there was a component cleanup system ({{memory.js
_cleanComponentNodes}}) which was responsible to remove components after ajax calls if the
component was removed from the current view.
Therefore the above example (revert {{popupPanel}} to {{modalPanel}}) works in
RF3.3.4.Final.
Note:
In case {{domElementAttachment="parent"}}, it will show [the other JSF2
bug|https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790] where the view state was
lost, therefore you must click the action button twice to really call the function.
--
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