Author: svenmeier
Date: Tue Dec 20 08:38:26 2011
New Revision: 1221142

URL: http://svn.apache.org/viewvc?rev=1221142&view=rev
Log:
WICKET-4258 feedback messages are cleared before wicket-devutils's PageView 
accesses the model object

Modified:
    
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java

Modified: 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java?rev=1221142&r1=1221141&r2=1221142&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
 (original)
+++ 
wicket/branches/wicket-1.5.x/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/FeedbackPanel.java
 Tue Dec 20 08:38:26 2011
@@ -31,8 +31,10 @@ import org.apache.wicket.markup.html.Web
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.WebSession;
 
 
 /**
@@ -63,10 +65,36 @@ public class FeedbackPanel extends Panel
                }
 
                @Override
+               protected IModel<FeedbackMessage> getListItemModel(
+                       final IModel<? extends List<FeedbackMessage>> 
listViewModel, final int index)
+               {
+                       return new AbstractReadOnlyModel<FeedbackMessage>()
+                       {
+                               private static final long serialVersionUID = 1L;
+
+                               /**
+                                * WICKET-4258 Feedback messages might be 
cleared already.
+                                * 
+                                * @see WebSession#cleanupFeedbackMessages()
+                                */
+                               @Override
+                               public FeedbackMessage getObject()
+                               {
+                                       if (index >= 
listViewModel.getObject().size())
+                                       {
+                                               return null;
+                                       }
+                                       else
+                                       {
+                                               return 
listViewModel.getObject().get(index);
+                                       }
+                               }
+                       };
+               }
+
+               @Override
                protected void populateItem(final ListItem<FeedbackMessage> 
listItem)
                {
-                       final FeedbackMessage message = 
listItem.getModelObject();
-                       message.markRendered();
                        final IModel<String> replacementModel = new 
Model<String>()
                        {
                                private static final long serialVersionUID = 1L;
@@ -80,10 +108,12 @@ public class FeedbackPanel extends Panel
                                @Override
                                public String getObject()
                                {
-                                       return getCSSClass(message);
+                                       return 
getCSSClass(listItem.getModelObject());
                                }
                        };
 
+                       final FeedbackMessage message = 
listItem.getModelObject();
+                       message.markRendered();
                        final Component label = 
newMessageDisplayComponent("message", message);
                        final AttributeModifier levelModifier = new 
AttributeModifier("class", replacementModel);
                        label.add(levelModifier);


Reply via email to