You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Steve Olara <st...@yahoo.co.uk> on 2009/07/20 14:46:32 UTC

Re: passing a session to a wizard

Hello All,
 
I have been trying to design functionality of a webapp using wizard.
 
I need to pass a object (Questionnaire) to the wizard page, the object contains a set of questions.
 
on passing the object, when I try to pick the set of questions using q.getqn() where q is the object, a null set is returned and I get a error saying: LazyInitializationException:19 - failed to lazily initialize a collection of role: questionnaire.model.Questionnaire.qn, no session or session was closed

I have searched and found lots of articles about this error but I guess my programming is still imature cause I seem not to get this to work yet.
 
Below is my code is there a way of passing the previous session to this class.

 
public final class AnswerWizard extends Wizard {
    public AnswerWizard(String id, Questionnaire q) {
        super(id);
        
        // create a model with a couple of custom panels
        // still not that spectacular, but at least it
        // will give you a hint of how nice it is to
        // be able to work with custom panels
        WizardModel model = new WizardModel();
       
        Set questions = q.getQn();
      
        Iterator iter = questions.iterator();
        System.out.println("Testing55: " );
        for (;iter.hasNext();) {
            Question qn = (Question) iter.next();
            if (qn instanceof QuestionShortAns) {
                model.add(new StepQSA((QuestionShortAns) qn));
            } else if (qn instanceof QuestionSingleSelect) {
                model.add(new StepQSS((QuestionSingleSelect) qn));
            } else if (qn instanceof QuestionMatch) {
                model.add(new StepQm((QuestionMatch) qn));
            }
        }
        // initialize the wizard
        init(model);
    }
    private static final class StepQSS extends WizardStep {
        /**
         * Construct.
         */
        public StepQSS(QuestionSingleSelect qn) {
            super("One", "The first step");
        }
    }
    private static final class StepQSA extends WizardStep {
        /**
         * Construct.
         */
        public StepQSA(QuestionShortAns qn) {
            super("Two", "The second step");
        }
    }
    private static final class StepQm extends WizardStep {
        /**
         * Construct.
         */
        public StepQm(QuestionMatch qn) {
            super("Three", "The third step");
        }
    }
    public void onCancel() {
        //setResponsePage(Index.class);
    }
    /**
     * @see org.apache.wicket.extensions.wizard.Wizard#onFinish()
     */
    public void onFinish() {
        // setResponsePage(Index.class);
    }
}

 
Any Help will be highly appreciated

 


      

Re: passing a session to a wizard

Posted by Michael Sparer <mi...@gmx.at>.
sounds like a detached object. the interesting part would be where you got
the object from. if you're using OpensessionInViewFilter (and therefore a
session is during the whole request), it's likely that the object stays in
the session between requests - you should use LoadableDetachableModels then
...



Steve Olara wrote:
> 
> Hello All,
>  
> I have been trying to design functionality of a webapp using wizard.
>  
> I need to pass a object (Questionnaire) to the wizard page, the object
> contains a set of questions.
>  
> on passing the object, when I try to pick the set of questions using
> q.getqn() where q is the object, a null set is returned and I get a error
> saying: LazyInitializationException:19 - failed to lazily initialize a
> collection of role: questionnaire.model.Questionnaire.qn, no session or
> session was closed
> 
> I have searched and found lots of articles about this error but I guess my
> programming is still imature cause I seem not to get this to work yet.
>  
> Below is my code is there a way of passing the previous session to this
> class.
> 
>  
> public final class AnswerWizard extends Wizard {
>     public AnswerWizard(String id, Questionnaire q) {
>         super(id);
>         
>         // create a model with a couple of custom panels
>         // still not that spectacular, but at least it
>         // will give you a hint of how nice it is to
>         // be able to work with custom panels
>         WizardModel model = new WizardModel();
>        
>         Set questions = q.getQn();
>       
>         Iterator iter = questions.iterator();
>         System.out.println("Testing55: " );
>         for (;iter.hasNext();) {
>             Question qn = (Question) iter.next();
>             if (qn instanceof QuestionShortAns) {
>                 model.add(new StepQSA((QuestionShortAns) qn));
>             } else if (qn instanceof QuestionSingleSelect) {
>                 model.add(new StepQSS((QuestionSingleSelect) qn));
>             } else if (qn instanceof QuestionMatch) {
>                 model.add(new StepQm((QuestionMatch) qn));
>             }
>         }
>         // initialize the wizard
>         init(model);
>     }
>     private static final class StepQSS extends WizardStep {
>         /**
>          * Construct.
>          */
>         public StepQSS(QuestionSingleSelect qn) {
>             super("One", "The first step");
>         }
>     }
>     private static final class StepQSA extends WizardStep {
>         /**
>          * Construct.
>          */
>         public StepQSA(QuestionShortAns qn) {
>             super("Two", "The second step");
>         }
>     }
>     private static final class StepQm extends WizardStep {
>         /**
>          * Construct.
>          */
>         public StepQm(QuestionMatch qn) {
>             super("Three", "The third step");
>         }
>     }
>     public void onCancel() {
>         //setResponsePage(Index.class);
>     }
>     /**
>      * @see org.apache.wicket.extensions.wizard.Wizard#onFinish()
>      */
>     public void onFinish() {
>         // setResponsePage(Index.class);
>     }
> }
> 
>  
> Any Help will be highly appreciated
> 
>  
> 
> 
> 
> 


-----
Michael Sparer
http://techblog.molindo.at
-- 
View this message in context: http://www.nabble.com/Re%3A-passing-a-session-to-a-wizard-tp24569201p24572534.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org