[ 
https://issues.apache.org/jira/browse/WICKET-2438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12752004#action_12752004
 ] 

Igor Vaynberg commented on WICKET-2438:
---------------------------------------

this problem was fixed in two places, a) resetting reporter to null in 
requestcycle.cleanupfeedbackmessages(), and b) by removing the actual items.

(a) should be sufficient, (b) was more of a backup in case the user somehow 
managed to hold on to the reference.

> AjaxEventBehavior not working on feedback message components
> ------------------------------------------------------------
>
>                 Key: WICKET-2438
>                 URL: https://issues.apache.org/jira/browse/WICKET-2438
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.4.0, 1.4.1
>         Environment: N/A
>            Reporter: Ian MacLarty
>            Assignee: Igor Vaynberg
>             Fix For: 1.4.2, 1.5-M1
>
>
> If you add an onclick AjaxEventBehavior to a component that is used to 
> display a message in a FeedbackPanel, then when you click the feedback 
> message Wicket throws an exception.  The exception looks like the following:
> WicketMessage: org.apache.wicket.WicketRuntimeException: component 
> feedback:feedbackul:messages:0:message not found on page bug.HomePage[id = 
> 0], listener interface = [RequestListenerInterface name=IBehaviorListener, 
> method=public abstract void 
> org.apache.wicket.behavior.IBehaviorListener.onRequest()]
> The problem seems to be caused by the change made in revision 796389, which 
> removes all the child elements of the feedback panel when it is detached.
> The bug can be reproduced by creating a wicket-1.4.1 quickstart app and 
> modifying HomePage.html to be:
> <html 
> xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"; >
>     <head>  
>         <title>Wicket Quickstart Archetype Homepage</title>
>     </head>
>     <body>
>         <form wicket:id="form"> 
>             <input wicket:id="field" type="text" />
>             <input type="submit" />
>         </form>
>         <div wicket:id="feedback" />
>     </body>
> </html>
> and HomePage.java to be:
> package bug;
> import org.apache.wicket.PageParameters;
> import org.apache.wicket.markup.html.basic.Label;
> import org.apache.wicket.markup.html.WebPage;
> import org.apache.wicket.markup.html.form.*;
> import org.apache.wicket.model.*;
> import org.apache.wicket.*;
> import org.apache.wicket.markup.html.panel.*;
> import org.apache.wicket.feedback.*;
> import org.apache.wicket.ajax.*;
> /**
>  * Homepage
>  */
> public class HomePage extends WebPage {
>     private Double value;
>     public HomePage(final PageParameters parameters) {
>         Form form = new Form("form", new CompoundPropertyModel(this));
>         add(form);
>         form.add(new TextField<Double>("field", Double.class));
>         add(new FeedbackPanel("feedback") {
>             @Override
>             protected Component newMessageDisplayComponent(String id, 
> FeedbackMessage message) {
>                 Label label;
>                 label = new Label(id, "click me");
>                 label.add(new AjaxEventBehavior("onclick") {
>                     @Override               
>                     protected void onEvent(AjaxRequestTarget target) {
>                         System.out.println("error message clicked");
>                     }
>                 });
>                 return label;
>             }
>         });
>     }
>     public void setField(Double field) {
>         value = field;
>     }
>     public Double getField() {
>         return value;
>     }
> }
> Launch the app and enter an invalid number (e.g. "xxx").  Submit the form and 
> then click the "click me" message.

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

Reply via email to