I use Wicket 1.4.17.
I tried with replaceWith like this :
                //affichage du module interactif
                String idContent = qPage.getModalWindow().getContentId();
                ModuleContentPanel moduleContentPanel = new
ModuleContentPanel(idContent);
                moduleContentPanel.initialiserModule(questionnaireCourant);

qPage.getModalWindow().get(idContent).replaceWith(moduleContentPanel);
                qPage.getModalWindow().setTitle("Module
"+questionnaireCourant.getTitre());
                //qPage.getModalWindow().setContent(moduleContentPanel);

                target.addComponent(qPage.getModalWindow());

and it's weird : my unit test is OK
    @Test
    public void testStory09_TA01(){
        tester.startPage(QuestionnairesPage.class);
        //On répond au questionnaire
        Component module = reponseQuestionnaireNutrition();
        //et on vérifie que le module s'affiche bien
        tester.assertNoErrorMessage();
        tester.assertRenderedPage(QuestionnairesPage.class);
        tester.assertVisible(module.getPageRelativePath());
    }

but when I test manually I can see that content panel of modal window is
still the same...



Maybe reponseQuestionnaireNutrition() can be useful to understand my test:
    private Component reponseQuestionnaireNutrition() {
        //Récupération des composants présents dans la fenetre du
questionnaire
        ModalWindowE4N modalWindowQuestionnaire = (ModalWindowE4N)
tester.getComponentFromLastRenderedPage("fenetreModale");
        QuestionnaireContentPanel questionnairePanel =
(QuestionnaireContentPanel)
modalWindowQuestionnaire.get(modalWindowQuestionnaire.getContentId());
        Form<?> qForm = (Form<?>) questionnairePanel.get("qForm");

        tester.assertInvisible(qForm.getPageRelativePath());

tester.clickLink("listeQuestionnaire:1:boutonQuestionnaire:remplir");
        tester.assertVisible(qForm.getPageRelativePath());

        //creation d'un formTester
        FormTester formTester =
tester.newFormTester(qForm.getPageRelativePath());

        //on répond aux questions
        RepeatingView view = (RepeatingView) qForm.get("qRepeating");
        Iterator<? extends Component> iter = view.iterator();
        int index = 2;
        while(iter.hasNext()){
            //on selectionne une reponse
            formTester.select("qRepeating:"+index+":reponse:reponseListe",
2);
            iter.next();
            index++;
        }
        //puis on soumet le formulaire
        tester.executeAjaxEvent(qForm.get("ajaxSubmitQuestionnaire"),
"onclick");
        ModuleContentPanel modulePanel = (ModuleContentPanel)
modalWindowQuestionnaire.get(modalWindowQuestionnaire.getContentId());
        Component module = modulePanel.get("module");
        module = modulePanel.get("module");
        return module;
    }

2011/7/29 Mathilde Pellerin <[email protected]>

> I tried your solution Andrea :
> - just one modal window :
>             modalWindow = new ModalWindowE4N("modalQuestionnaire", "");
>             questionnaireContentPanel = new
> QuestionnaireContentPanel(modalWindow.getContentId(), this);
>             modalWindow.setContent(questionnaireContentPanel);
>             modalWindow.setInitialWidth(800);
>             add(modalWindow);
>
> - after submit, substitute window content with ModuleContentPanel :
>
>                 membreCourant =
> serviceMembre.enregistrerReponses(membreCourant, questionnaireCourant);
>                 SessionE4N.get().setMembre(membreCourant);
>                 //qPage.getModalWindow().close(target);
>                 ModuleContentPanel moduleContentPanel = new
> ModuleContentPanel(qPage.getModalWindow().getContentId());
>                 moduleContentPanel.initialiserModule(questionnaireCourant);
>                 qPage.getModalWindow().setTitle("Module
> "+questionnaireCourant.getTitre());
>                 qPage.getModalWindow().setContent(moduleContentPanel);
>
>                 target.addComponent(qPage.getModalWindow());
>                 //qPage.getModalWindow().show(target);
>
> but modal window is not re-render, so it content is not changed...
> maybe target.addComponent() is not sufficient?
>
> so I tried also with qPage.getModalWindow().close before changes and
> qPage.getModalWindow().show() after changes (with or without
> target.addComponent) : in these cases, we can see modal window change a
> second and then render with first content...
>
> what am I doing wrong?
>



-- 
*Mathilde Pellerin*
Ingénieur en développement de logiciel

STATLIFE
tel : 01.42.11.64.88
mail : [email protected]

Reply via email to