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