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

ejeklint edited comment on WICKET-1239 at 1/8/08 3:36 AM:
--------------------------------------------------------------

I think this is a bug in some JRE's, not in the code. An anonymous class should 
have access to an enclosing class' inherited protected methods - 
onComponentChanged() and onComponentChanging() in this case - but obviously the 
JRE things differently.

A solution/workaround is to declare 

        @Override
        protected void onModelChanged() {
                super.onModelChanged();
        }

        @Override
        protected void onModelChanging() {
                super.onModelChanging();
        }


in AjaxEditableLabel and all should be fine. At least it works for me on Mac 
10.5.1 with Java 1.5.0.

      was (Author: ejeklint):
    I think this is a bug in some JRE's, not in the code. An anonymous class 
should have access to an enclosing class' inherited protected methods - 
onComponentChanged() and onComponentChanging() - but obviously the JRE things 
differently.

A workaround is to declare 

        @Override
        protected void onModelChanged() {
                super.onModelChanged();
        }

        @Override
        protected void onModelChanging() {
                super.onModelChanging();
        }


in AjaxEditableLabel and all should be fine. At least it works for me on Mac 
10.5.1 with Java 1.5.0.
  
> java.lang.IllegalAccessError when changing AjaxEditableLabel 
> -------------------------------------------------------------
>
>                 Key: WICKET-1239
>                 URL: https://issues.apache.org/jira/browse/WICKET-1239
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-extensions
>    Affects Versions: 1.3.0-rc2, 1.3.0-final
>         Environment: Windows XP Pro SP2, Java 1.6.0_03-b05
>            Reporter: Artur Wronski
>
> When changing AjaxEditableLabel system throws:
> java.lang.IllegalAccessError: tried to access method
> org.apache.wicket.Component.onModelChanging()V from class
> org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel$1
>     at
> org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel$1.onModelChanging
> (AjaxEditableLabel.java:273)
>     at org.apache.wicket.Component.modelChanging(Component.java:2058)
>     at org.apache.wicket.Component.setModelObject(Component.java:2823)
>     at org.apache.wicket.markup.html.form.FormComponent.updateModel(
> FormComponent.java:992)
>     at org.apache.wicket.markup.html.form.FormComponent.processInput(
> FormComponent.java:874) 
> [...]
> The probem is in methd:
>         protected FormComponent newEditor(MarkupContainer parent, String 
> componentId, IModel model)
>         {
>                 TextField editor = new TextField(componentId, model)
>                 {
>                         private static final long serialVersionUID = 1L;
>                         protected void onModelChanged()
>                         {
>                                 super.onModelChanged();
>                                 AjaxEditableLabel.this.onModelChanged();  
> //here is a bug
>                         }
>                         protected void onModelChanging()
>                         {
>                                 super.onModelChanging();
>                                 AjaxEditableLabel.this.onModelChanging();  
> //here is a bug
>                         }
>                 };
>                 editor.setOutputMarkupId(true);
>                 editor.setVisible(false);
>                 editor.add(new EditorAjaxBehavior());
>                 return editor;
>         } 
> AjaxEditableLabel.this.XXXXXX is not visible.
> Artur

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