[
https://issues.apache.org/jira/browse/MYFACES-3702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17159378#comment-17159378
]
Volodymyr Siedlecki commented on MYFACES-3702:
----------------------------------------------
[~tandraschko]
I'd be happy to. However, I'm a bit busy with work. When I will try to get to
this when I have some time.
Thanks
> 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)