Apache Wicket을 사용하여 양식을 작성하는 중입니다. 동일한 페이지/클래스는 새 항목을 데이터베이스에 추가하고 데이터베이스의 기존 레코드를 편집하는 데 사용됩니다. 물론 페이지 생성자는 한 번만 호출되기 때문에 모델은 페이지에 처음로드 된 레코드로 설정되거나 기존 레코드를 편집하지 않는 경우 새 레코드로 설정됩니다.Wicket 양식을 사용할 때 Wicket 모델의 로딩을 어떻게 처리해야합니까?
동적으로 데이터를로드하는 데는 여러 가지 방법이 있지만 사실은 장황하고 다소 복잡해 보입니다. 이런 시나리오를 처리하기위한 최선의 방법이 있다고 생각합니다.
참고로는 여기에 몇 가지 편집 코드 :
public class JobManagement extends WebPage {
private static final long serialVersionUID = 1L;
private long jobId = 0;
protected void setJobId(long id) {
this.jobId = id;
}
protected long getJobId() {
return jobId;
}
public JobManagement() {
LoadableDetachableModel<Job> jobModel = new LoadableDetachableModel<Job>() {
private static final long serialVersionUID = 1L;
@Override
protected Job load() {
Job job = (Job) EntityFactory.getInstance().getBean("job");
// if we're editing an existing job, load the object
if (jobId >= 1) {
job.load(jobId);
}
return job;
}
};
add(new FeedbackPanel("feedbackPanel"));
Form<Job> jobForm = new Form<Job>("jobForm") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
// Handles the form submit...
}
};
add(jobForm);
jobForm.setModel(new CompoundPropertyModel<Job>(jobModel));
// SNIP ... All my form fields go here!
jobForm.add(new Button("submit"));
}
}
나는 LoadableDetachableModel를 사용하고 있지만, 가장 좋은 페이지가있을 때마다 동적으로로드 처리하는 방법을 나에게 완전히 분명하지 않다 렌더링. 모델의 새 인스턴스를로드하려고 시도했지만 내 LoadableDetachableModel을 반환하는 getObject() 클래스를 재정의했습니다.하지만 그에 대해 매우 잘못된 점이 있습니다. 모든 입력을 부탁드립니다. 나는 온라인 문서를 독점적으로 통해이 프레임 워크를 통해 자신의 길을 느껴 보려고 노력했기 때문에 친숙 함이 분명하지 않다는 것을 용서하십시오.
에 모델에 도메인 개체를 결합하는 데 사용하는 방법이 있지만 (!) 참고로 archieve 싶은 : 그것은을 가능한 한 짧게 생성자를 유지하고 코드를'initialize()'와'onBeforeRender()'메소드로 옮기는 것이 더 좋다. 각 렌더링 전에 onBeforeRender()를 처음으로 구성하기 전에 initialize()가 호출됩니다. 아마 이것은 당신의 문제에 도움이 될 수 있습니다. – Nicktar
@Nicktar 나는 네가하는 말을 분명히 보았다. 내가 찾고있는 결과를 얻을 수 있는지 확인하기 위해 이러한 방법으로 작업 해 보겠습니다. – mchandler