[richfaces-issues] [JBoss JIRA] (RF-12145) RF4.2: Render and Oncomplete attributes not evaluated after invokeApplication if command is not rendered anymore
Jan Papousek (JIRA)
jira-events at lists.jboss.org
Wed Apr 25 10:53:18 EDT 2012
[ https://issues.jboss.org/browse/RF-12145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12687628#comment-12687628 ]
Jan Papousek commented on RF-12145:
-----------------------------------
Verified.
Michael: Thank you for reporting the issue and I apologize for my slowness :-).
> RF4.2: Render and Oncomplete attributes not evaluated after invokeApplication if command is not rendered anymore
> ----------------------------------------------------------------------------------------------------------------
>
> Key: RF-12145
> URL: https://issues.jboss.org/browse/RF-12145
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 4.2.0.Final
> Environment: MyFaces 2.1.6 / Mojarra 2.1.7
> Tomcat 6.0.35 / 7.0.26
> Reporter: Michael Heinen
> Assignee: Jan Papousek
> Priority: Critical
> Attachments: onc333.war, onc42.war, zOnc333WithLibs.war, zOnc42New.war, zOnc42WithLibs.war
>
>
> Sample use case:
> The last page of a wizard contains a commandButton with an EL expressions in the oncomplete attribute and in the render attribute.
> This button renders an outer component in order to close the wizard. The button itself is not rendered anymore after clicking it.
> As a consequence the EL expressions of the oncomplete attribute and of the render attribute is not evaluated after the invocation of an actionListener.
> This worked well with richfaces 3.3.3, therefore it's a critical regression.
> I'll attach a sample webApp for richfaces 4.2 and for riochfaces 3.3.3
> Note that the render attribute of f:ajax is evaluated correctly.
> These attributes of the clicked command must be evaluated in phase render response in all cases.
> ----
> {code:title="OncController.java"}
> package com;
> import java.util.Map;
> import javax.faces.bean.ManagedBean;
> import javax.faces.bean.SessionScoped;
> import javax.faces.context.FacesContext;
> import javax.faces.event.ActionEvent;
> @ManagedBean(name = "OncController")
> @SessionScoped
> public class OncController
> {
> private boolean innerShown = true;
>
> private int calls = 0;
> public OncController()
> {
> }
> public boolean isInnerShown()
> {
> return innerShown;
> }
> public void setInnerShown(boolean aInnerShown)
> {
> innerShown = aInnerShown;
> }
>
> public void clear(final ActionEvent ae)
> {
> innerShown=true;
> calls=0;
> }
> public void doIt(final ActionEvent ae)
> {
> final Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext()
> .getRequestMap();
> requestMap.put("key1", "alert('after actionListener');");
> requestMap.put("key2", "group2");
> calls++;
> }
> public String getOncomplete()
> {
> final Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext()
> .getRequestMap();
> final String value = (String) requestMap.get("key1");
> if (value != null)
> {
> return value;
> }
> else
> {
> return "alert('before actionListener');";
> }
> }
> public String getRenderIdsRichfaces()
> {
> final Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext()
> .getRequestMap();
> final String value = (String) requestMap.get("key2");
> if (value != null)
> {
> return ","+value;
> }
> return"";
> }
>
> public String getRenderIdsFAjax()
> {
> final Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext()
> .getRequestMap();
> final String value = (String) requestMap.get("key2");
> if (value != null)
> {
> return " " + value;
> }
> return"";
> }
>
> public int getCalls()
> {
> return calls;
> }
> }
> {code}
> {code:title="oncomplete.xhtml"}
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:ui="http://java.sun.com/jsf/facelets"
> xmlns:h="http://java.sun.com/jsf/html"
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:a4j="http://richfaces.org/a4j"
> xmlns:rich="http://richfaces.org/rich"
> xmlns:c="http://java.sun.com/jsp/jstl/core">
> <ui:composition>
> <h:head><title>Oncomplete test</title></h:head>
> <h:body>
> <a4j:log mode="popup"/>
> <h:form id="myForm">
> Post button rendered:<h:selectBooleanCheckbox id="innerBool" value="#{OncController.innerShown}"/>
> <br/>
> <h:panelGroup id="outer">
> <c:if test="#{OncController.innerShown}">
> <a4j:commandButton value="RichFaces Post"
> actionListener="#{OncController.doIt}"
> render="outer,details#{OncController.renderIdsRichfaces}"
> oncomplete="#{OncController.oncomplete}"/>
> <h:commandButton value="fAJAX Post"
> actionListener="#{OncController.doIt}">
> <f:ajax render="outer details#{OncController.renderIdsFAjax}"
> execute="@form"/>
> </h:commandButton>
> </c:if>
> </h:panelGroup>
> <br/><br/>
> <h:panelGroup id="details">
> oncomplete: <h:outputText value="#{OncController.oncomplete}"/>
> </h:panelGroup>
> <br/><br/>
> <h:panelGroup id="group2">
> calls: <h:outputText value="#{OncController.calls}"/>
> </h:panelGroup>
> <br/><br/>
> <a4j:commandButton value="Clear"
> actionListener="#{OncController.clear}"
> render="myForm" />
> </h:form>
> </h:body>
> </ui:composition>
> </html>
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list