myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jakob Korherr (JIRA)" <...@myfaces.apache.org>
Subject [jira] Commented: (MYFACES-2594) Facelets state saving doesn't handle well programmatic component manipulation
Date Tue, 09 Mar 2010 21:04:27 GMT

    [ https://issues.apache.org/jira/browse/MYFACES-2594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12843290#action_12843290
] 

Jakob Korherr commented on MYFACES-2594:
----------------------------------------

Mhm. This is caused, because the current state saving mechanism relies on rebuilding the view
from the VDL page (.xhtml or .jsp). I also had a problem with this once.

It seems that we somehow have to detect those dynamic tree alterations and also store them
in the state to be able to restore them in the next postback. The best thing would be to check
for the current lifecycle phase when the children of a component are altered, I think.

Unfortunately I guess the spec does not say anything about this...

> Facelets state saving doesn't handle well programmatic component manipulation
> -----------------------------------------------------------------------------
>
>                 Key: MYFACES-2594
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2594
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.0.0-beta-3
>         Environment: myfaces trunk
>            Reporter: Martin Koci
>            Priority: Minor
>
> Simple tests (code pasted below) outputs following results: 
> 1) JSP: switchs colums at every click with no problem
> 2) Facelets with javax.faces.PARTIAL_STATE_SAVING=false - no visual switch
> 3) Facelets with javax.faces.PARTIAL_STATE_SAVING=true switchs colums at every click
with no problem
> Common code from test.jspx and test.xhtml
> ... jsp: or facelets stuff  here ...
>     <h:form id="form">
>        <h:commandButton value="Switch columns">
>         <f:actionListener binding="#{testBean}" />
>       </h:commandButton>
>       <h:dataTable id="table">
>         <h:column>
>           <f:facet name="header">
>             <h:outputText value="firstName" />
>           </f:facet>
>         </h:column>
>         <h:column>
>           <f:facet name="header">
>             <h:outputText value="surname" />
>           </f:facet>
>         </h:column>
>       </h:dataTable>
>      </h:form>
> @ManagedBean
> @RequestScoped
> public class TestBean implements ActionListener {
>         public void processAction(ActionEvent event) throws AbortProcessingException
{
>                 FacesContext context  = FacesContext.getCurrentInstance();
>                 UIComponent table = context.getViewRoot().findComponent("form:table");
>                 UIComponent column1 = table.getChildren().get(0);
>                 UIComponent column2 = table.getChildren().get(1);
>                 table.getChildren().clear();
>                 table.getChildren().add(column2);
>                 table.getChildren().add(column1);
>         }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message