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]