[ https://issues.apache.org/jira/browse/MYFACES-3702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157295#comment-17157295 ]
Thomas Andraschko edited comment on MYFACES-3702 at 7/14/20, 11:41 AM: ----------------------------------------------------------------------- It seems that Mojarra (both UIData and UIRepeat) resets always the DataModel. Based on Validation-State and Error-FacesMessages, it resets the row state. In MyFaces, both states are resetted based on Validation-State and Error-FacesMessages. Before chain anything here, we should make some integration tests for the other already fixed issues. was (Author: tandraschko): It seems that Mojarra (both UIData and UIRepeat) resets always the DataModel. Based on Validation-State and Error-FacesMessages, it resets the row state. In MyFaces, both states are resetted based on Validation-State and Error-FacesMessages > ui:repeat is caching its data model if error occurs > ---------------------------------------------------- > > Key: MYFACES-3702 > URL: https://issues.apache.org/jira/browse/MYFACES-3702 > Project: MyFaces Core > Issue Type: Bug > Affects Versions: 2.1.10 > Reporter: dennis hoersch > Priority: Major > > ui:repeat caches its data model. Usually it it is cleared before rendering. > But not if there are any errors in faces context. > Why is it not cleared then? > That causes a problem in the following scenario: > We have an ui:repeat that iterating over a list of more detailed error > messages of an object on the page. This list is empty in the start of an > request. While invoking an action on the page error messages are added to the > faces context to be shown on the page. Additionally some more detailed > information is stored to be shown directly with that object. > But they won't appear because the empty list is cached in the ui:repeat's > data model. > I could reproduce it with the following more general example: The first > button creates an info message which will be shown by the ui:repeat. The > second button creates an error message and nothing is rendered through the > ui:repeat. > Testpage.xhtml > <his:form id="testForm"> > <h:commandButton value="Create info message" > action="#{testController.createInfoMessage()}" /> > <h:commandButton value="Create error message" > action="#{testController.createErrorMessage()}" /> > <br/> > UI:Repeat: > <ui:repeat var="item" value="#{facesContext.getMessageList()}"> > FacesMessage #{item.severity} // #{item.summary} > </ui:repreat>|<br/> > Has Messages: #{not empty facesContext.getMessageList()}| > </his:form> > TestController > public void createErrorMessage() { > MessageUtils.addMessage(FacesMessage.SEVERITY_ERROR, "Oh no, an error!", > new Object[] {}); > } > public void createInfoMessage() { > MessageUtils.addMessage(FacesMessage.SEVERITY_INFO, "Just an information.", > new Object[] {}); > } -- This message was sent by Atlassian Jira (v8.3.4#803005)