Ok, so I try with your method. This is my model :
public class QuestionnaireModel extends
LoadableDetachableModel<Questionnaire> {
@SpringBean
private ServiceQuestionnaire serviceQuestionnaire;
private Long id;
public QuestionnaireModel(Long primaryKey) {
id = primaryKey;
}
@Override
protected Questionnaire load() {
return serviceQuestionnaire.getOne(id);
}
}
But I have a null pointer exception :
java.lang.NullPointerException
at
fr.statlife.protoE4N.pages.membre.QuestionnaireModel.load(QuestionnaireModel.java:22)
at
fr.statlife.protoE4N.pages.membre.QuestionnaireModel.load(QuestionnaireModel.java:1)
at
org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:120)
at
org.apache.wicket.Component.getDefaultModelObject(Component.java:1724)
at
fr.statlife.protoE4N.pages.membre.QuestionnairesPage$BoutonRemplirQuestionnaire$1.onClick(QuestionnairesPage.java:112)
[...]
Questionnaire is also an attribute of my Page and maybe there is a conflict.
This code calls my new model :
item.add(new BoutonRemplirQuestionnaire("boutonQuestionnaire", new
QuestionnaireModel(q.getIdQuestionnaire())));
and this is inner class BoutonRemplirQuestionnaire :
class BoutonRemplirQuestionnaire extends Panel
{
public BoutonRemplirQuestionnaire(String id, IModel<?> model) {
super(id, model);
//Ajout du lien qui affichera le questionnaire
AjaxLink<Void> showQuestionnaire = new AjaxLink<Void>("remplir")
{
@Override
public void onClick(AjaxRequestTarget target) {
qCourant =
(Questionnaire)getParent().getDefaultModelObject();
target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
questionnaireContentPanel.initialiserQuestionnaire(qCourant);
modalWindow.setContent(questionnaireContentPanel);
modalWindow.setTitle(qCourant.getTitre());
modalWindow.show(target);
}
};
add(showQuestionnaire);
}
}
the NullPointerException is sent by this line :
qCourant = (Questionnaire)getParent().getDefaultModelObject();
Maybe modal window make this problem more complex...