So, what does it print when you print out the class name?

On Thu, Oct 23, 2008 at 6:24 AM, pieter claassen <[EMAIL PROTECTED]> wrote:
> Ok, I might be doing something thats not ok but ..... there are not two
> ListViews on this page (there are 3 forms? Is this a problem?)
> ClassCastException is throw at System.out.println("++++")
>
>
> package com.musmato.wicket.pages.templates;
>
> import java.util.Arrays;
>
> import org.apache.wicket.markup.html.form.DropDownChoice;
> import org.apache.wicket.markup.html.form.Form;
> import org.apache.wicket.markup.html.form.RequiredTextField;
> import org.apache.wicket.markup.html.form.TextArea;
> import org.apache.wicket.markup.html.link.Link;
> import org.apache.wicket.markup.html.list.ListItem;
> import org.apache.wicket.markup.html.list.ListView;
> import org.apache.wicket.model.CompoundPropertyModel;
>
> import com.musmato.model.QuestionAndAnswer;
> import com.musmato.model.Role;
> import com.musmato.model.Template;
> import com.musmato.model.WebControlType;
> import com.musmato.wicket.model.QuestionAndAnswerWebModel;
> import com.musmato.wicket.model.TemplateWebModel;
> import com.musmato.wicket.pages.AuthPage;
> import com.musmato.wicket.util.WicketApplication;
>
> public class TemplateEditPage extends AuthPage {
>
>        public TemplateEditPage(TemplateWebModel templatemodel) {
>
>                add(new TemplateEditForm("templateeditform", templatemodel));
>                add(new QuestionAddForm("questionaddform", templatemodel));
>                add(new QuestionEditForm("questioneditform", templatemodel));
>        }
>
>        @Override
>        public Role[] getAllowedRoles() {
>                // TODO Auto-generated method stub
>                return null;
>        }
>
>        private class TemplateEditForm extends Form {
>                private final Template template;
>
>                public TemplateEditForm(String id, TemplateWebModel
> templatemodel) {
>                        super(id);
>                        template = (Template) templatemodel.getObject();
>                        setModel(new CompoundPropertyModel(templatemodel));
>                        add(new RequiredTextField("name"));
>                        add(new RequiredTextField("version"));
>                        add(new TextArea("description"));
>                }
>
>                @Override
>                public void onSubmit() {
>
>  WicketApplication.get().getTemplateFactory().store(template);
>                        setResponsePage(new TemplateEditPage(new
> TemplateWebModel(template)));
>                }
>        }
>
>        private class QuestionAddForm extends Form {
>                private final Template template;
>
>                public QuestionAddForm(String id, TemplateWebModel
> templatemodel) {
>                        super(id);
>                        template = (Template) templatemodel.getObject();
>                        setModel(new CompoundPropertyModel(new
> QuestionAndAnswerWebModel(
>                                        (Long) null)));
>                        add(new RequiredTextField("question"));
>                        add(new DropDownChoice("type",
> Arrays.asList(WebControlType
>                                        .values())));
>                }
>
>                @Override
>                public void onSubmit() {
>                        QuestionAndAnswer qanda = (QuestionAndAnswer)
> getModel()
>                                        .getObject();
>
>                        template.addQuestion(qanda);
>
>  WicketApplication.get().getTemplateFactory().store(template);
>                        setResponsePage(new TemplateEditPage(new
> TemplateWebModel(template)));
>                }
>        }
>
>        private class QuestionEditForm extends Form {
>                private Template template;
>
>                public QuestionEditForm(String id, TemplateWebModel
> templatemodel) {
>                        super(id);
>                        template = (Template) templatemodel.getObject();
>                        ListView questionlist = new ListView("questions",
> template
>                                        .getQuestions()) {
>                                @Override
>                                protected void populateItem(ListItem item) {
>                                        System.out.println("+++++++"
>                                                        +
> item.getModelObject().getClass().getName());
>                                        final QuestionAndAnswer qanda =
> (QuestionAndAnswer) item
>                                                        .getModelObject();
>                                        setModel(new
> CompoundPropertyModel(qanda));
>                                        item.add(new
> RequiredTextField("question"));
>                                        item.add(new DropDownChoice("type",
> Arrays
>
>  .asList(WebControlType.values())));
>                                        item.add(new Link("delete") {
>                                                @Override
>                                                public void onClick() {
>
>  template.delQuestion(qanda);
>                                                        setResponsePage(new
> TemplateEditPage(
>                                                                        new
> TemplateWebModel(template)));
>                                                }
>                                        });
>                                }
>                        };
>                        add(questionlist);
>                }
>
>                @Override
>                public void onSubmit() {
>
>  WicketApplication.get().getTemplateFactory().store(template);
>                        setResponsePage(new TemplateEditPage(new
> TemplateWebModel(template)));
>                }
>        }
> }
>
> On Oct 23, 2008, at 12:04 PM, Martijn Dashorst wrote:
>
>> The classcastexception happens on retrieving the N-th item from the
>> list. The class cast tries to cast the model object of the listview to
>> a List. Apparently the argument to the listview is not a List, but
>> somethign that returns a QuestionAndAnswer.
>>
>> Are you looking at the correct ListView (i.e. are there more ListView
>> s on your page)?
>>
>> Martijn
>>
>> On Thu, Oct 23, 2008 at 11:55 AM, Dipu <[EMAIL PROTECTED]> wrote:
>>>
>>> pass , sorry i have no clue
>>>
>>> On Thu, Oct 23, 2008 at 10:37 AM, pieter claassen
>>> <[EMAIL PROTECTED]>wrote:
>>>
>>>> Ok, I added;
>>>>
>>>> public class Debug {
>>>>      public static void debug(List list) {
>>>>              for (Object item : list) {
>>>>                      System.out.println("++DEBUG++: " +
>>>> item.getClass().toString());
>>>>              }
>>>>      }
>>>>
>>>>
>>>> and called debug just before I returned my ArrayList of question:
>>>>
>>>>      public ArrayList<QuestionAndAnswer> getQuestions() {
>>>>              Debug.debug(questions);
>>>>              return questions;
>>>>      }
>>>>
>>>> This is what I saw in my console. There are two objects in the list and
>>>> they are both QuestionAndAnswer objects
>>>>
>>>>
>>>> ++DEBUG++: class com.musmato.model.QuestionAndAnswer
>>>> ++DEBUG++: class com.musmato.model.QuestionAndAnswer
>>>>
>>>> Regards,
>>>> Pieter
>>>>
>>>>
>>>> On Oct 23, 2008, at 11:18 AM, Dipu wrote:
>>>>
>>>> can't you check what exactly is being returned by
>>>> template.getQuestions()
>>>>>
>>>>> and if its a list what are the items in it
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Oct 23, 2008 at 10:10 AM, pieter claassen
>>>>> <[EMAIL PROTECTED]
>>>>>>
>>>>>> wrote:
>>>>>
>>>>> Hi Dipu,
>>>>>>
>>>>>> I tried that but when I do the following:
>>>>>>
>>>>>>            protected void populateItem(ListItem item) {
>>>>>>                    System.out.println("+++++++" +
>>>>>> item.getModelObject().getClass().getName());
>>>>>>                    final QuestionAndAnswer qanda = (QuestionAndAnswer)
>>>>>> item.getModelObject();
>>>>>>
>>>>>> I find that I now get the ClassCastException in the System.out.println
>>>>>> line. It is clear as mud that the problem is that I am trying to force
>>>>>> something into a list which is not a list?
>>>>>>
>>>>>> Regards,
>>>>>> Pieter
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Oct 23, 2008, at 10:59 AM, Dipu wrote:
>>>>>>
>>>>>> looks like template.getQuestions() is returning a list  with items in
>>>>>> it
>>>>>>
>>>>>>> which is not of the type QuestionAndAnswer
>>>>>>>
>>>>>>> try iterating through the list and logging the class name of each
>>>>>>> item
>>>>>>> in
>>>>>>> it
>>>>>>>
>>>>>>> Dipu
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 23, 2008 at 9:46 AM, pieter claassen
>>>>>>> <[EMAIL PROTECTED]
>>>>>>>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>
>>>>>>> I am getting a classcast exception in ListView that is stumping me.
>>>>>>>
>>>>>>>>
>>>>>>>> This is the error message (top few lines)
>>>>>>>>
>>>>>>>> WicketMessage: Error attaching this container for rendering:
>>>>>>>> [MarkupContainer [Component id = questioneditform]]
>>>>>>>>
>>>>>>>> Root cause:
>>>>>>>>
>>>>>>>> java.lang.ClassCastException: com.musmato.model.QuestionAndAnswer
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> org.apache.wicket.markup.html.list.ListItemModel.getObject(ListItemModel.java:55)
>>>>>>>> at org.apache.wicket.Component.getModelObject(Component.java:1558)
>>>>>>>> at
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> com.musmato.wicket.pages.templates.TemplateEditPage$QuestionEditForm$1.populateItem(TemplateEditPage.java:93)
>>>>>>>>
>>>>>>>>
>>>>>>>> This is the code that generates my ListItems:
>>>>>>>>
>>>>>>>>                  ListView questions = new ListView("questions",
>>>>>>>> template
>>>>>>>>                                  .getQuestions()) {
>>>>>>>>
>>>>>>>>
>>>>>>>>                          @Override
>>>>>>>>                          protected void populateItem(ListItem item)
>>>>>>>> {
>>>>>>>>                                  final QuestionAndAnswer qanda =
>>>>>>>> (QuestionAndAnswer) item
>>>>>>>>                                                  .getModelObject();
>>>>>>>>                                  setModel(new
>>>>>>>> CompoundPropertyModel(qanda));
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I know for a fact that template.getQuestions() produces an
>>>>>>>> ArrayList.
>>>>>>>>
>>>>>>>> The arraylist works when there is only 1 item in it but when I have
>>>>>>>> more
>>>>>>>> than 1 item, it fails with the ClassCastException. Is this a wicket
>>>>>>>> problem
>>>>>>>> or am I doing something wrong?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Pieter
>>>>>>>> pieter claassen
>>>>>>>> [EMAIL PROTECTED]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> pieter claassen
>>>>>>
>>>>>> [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>> pieter claassen
>>>> [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Become a Wicket expert, learn from the best: http://wicketinaction.com
>> Apache Wicket 1.3.4 is released
>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
> pieter claassen
> [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to