Hello, I'm really a beginner in wicket and I'm making an application that
will create dynamic surveys based on xml. I'm creating survey which is a
form containing different kinds of panel, and my problem is with submitting
users answers, can anyone help?

I would like to keep all answers in class
public class UserAnswer implements Serializable 
{
        private static final long serialVersionUID = 1L;
        private long surveyID;
        private List<SimpleAnswer> choosenAnswers = new 
ArrayList<SimpleAnswer>();

        ...
}

Survey panel class generates the survey form.

public class SurveyPanel extends Panel 
{       
        private Survey survey;
        private UserAnswer userAnswer;

        public SurveyPanel(String id, Survey s)
        {
                super(id);
                this.survey = s;
                
                userAnswer = new UserAnswer(s.getID());
                Form form = new Form("surveyForm", new Model(userAnswer))
                {
                        @Override
                        protected void onSubmit()
                        {
                                UserAnswer uA = (UserAnswer)getModelObject();
                                info(uA.toString());

                                info("the form was submitted!");
                        }
                                
                        @Override
                        public boolean isTransparentResolver()
                        {
                                return true;
                        }
                };
                
                add(form);
                form.add(new Label("surveyName", new PropertyModel(this, 
"survey.name")));
                questionsList = new ListView("survey", new PropertyModel(this,
"survey.questions"))
                {
                        private static final long serialVersionUID = 1L;
                        
                        protected void populateItem(ListItem item)
                        {
                                QuestionPanel questionPanel = null;
                                question = (Question)item.getModelObject();
                                QuestionType questionType = 
question.getQuestionType();
                                int index = item.getIndex();
                                switch(questionType)
                                {       
                                case CHECKBOX:
                                {
                                        ArrayList<SimpleAnswer> ans = new
ArrayList<SimpleAnswer>   
                                                                          
(question.getAnswers().size());
                                                
                                        questionPanel = new 
CheckBoxQuestion("question",
question, ans);
                                        userAnswer.addList(ans);
                                }break;
                                case RADIO:
                                        {       
                                                SimpleAnswer a = new 
SimpleAnswer(question.getQuestionID());
                                                userAnswer.add(a);
                                                questionPanel = new 
RadioGroupQuestion("question", question, a);
                                        }break;
                                }
                         }
                        item.add(questionPanel);
                        }
                };
                form.add(questionsList);
}


And here is the problem (I hope). Question panel is abstract Panel.

public class CheckBoxQuestion extends QuestionPanel
{
        private static final long serialVersionUID = 1L;
        
        CheckBoxMultipleChoice checkbox;
        ArrayList<SimpleAnswer> answers;
        

        public CheckBoxQuestion(String id, final Question q,
ArrayList<SimpleAnswer>ans)
        {
                super(id,q);
                setModel(new Model(ans));
                add(new Label("question.text", q.getQText()));
                List<SimpleAnswer> choices = q.getAnswers();

                add(checkbox = new CheckBoxMultipleChoice("answers",
                                new Model((Serializable) 
this.getModelObject()),choices, new 
                                ChoiceRenderer("text","answerID"))              
                );              
                        
        }
}
public class RadioGroupQuestion extends QuestionPanel
{

        RadioGroup group;
        
                
        public RadioGroupQuestion(String id, final Question q, SimpleAnswer u) 
        {
                super(id, q);
                add(new Label("question.text", q.getQText()));
                group = new RadioGroup("group", new CompoundPropertyModel(u));
                add(group);
                ListView answers = new 
ListView("answers",q.getCovertedAnswers())
                {

                        @Override
                        protected void populateItem(ListItem item) {
                                final SimpleAnswer simpleAnswer = 
(SimpleAnswer)item.getModelObject();
                                item.add(new Radio("answerID",new
PropertyModel(item.getModel(),"answerID")));
                                item.add(new Label("text", new
PropertyModel(item.getModel(),"answerText")));
                        }
                        
                };
                group.add(answers);
                
                
        }

}

Everything is displayed without any error submit also works but, well I
don't receive well filled UserAnswer object. Anyone has any idea what I do
wrong? Thanks in advance.
-- 
View this message in context: 
http://www.nabble.com/Creating-dynamic-forms-and-sumbit-problem-tp20875344p20875344.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to