Итак, я вижу, что этот вопрос задан, но я добавлю немного кода:
Где лучше всего разместить код для инициализации модели перед
страница рендеринга. Я знаю пять вариантов, но куда вы обычно ставите
это тип инициализации?
Перед рендерингом страницы я хочу установить данные в моем бине / модели с помощью
определенные атрибуты, которые могут быть характерны только для этой страницы.
Я думаю, что есть пять вариантов.
Добавить логику инициализации в конструктор. Это может сработать, но я
не знаю, вызывается ли конструктор для каждого вызова страницы (например, когда
страница десериализована).
Добавить логику инициализации в onBeforeRender. Это работает, и он призвал каждого
запрос? Но это лучшее место? Или на конфигурации? onInitialize.
И затем, вы вызываете setDefaultModel / setDefaultObject с обновленными значениями?
Добавить логику инициализации в методе «load» или «getmodel» в
Класс LoadableDetachableModel?
Добавить init на предыдущей странице для метода onSubmit или onEvent. (OnSubmit ()
{initBeanInSession (); setResponsePage (); }
Передать модель в конструктор панели или страницы (используя параметры страницы?)
Являются ли какие-либо из этих передовых методов или предпочтительнее, чем другие.
(a) Код конструктора страницы с загружаемой съемной моделью:
MyPage.java:
...
final Form form = new Form(FORM, new
CompoundPropertyModel(new LoadableDetachableModel() {
private static final long serialVersionUID = 1L;
@Override
protected MyBean load() {
final MyBean app = (MyBean) Session.get().getApp();
?????????????
?????????????
initialize here???????
?????????????
return app;
}
};
});
???
onBeforeRender() {
?? Add initiailize here
final MyBean app = (MyBean) Session.get().getApp();
app.setData(doSomeBusinessLogicHere)
}
или initModel?
/**
* Called once per request on components before they are about to be rendered.
* This method should be used to configure such things as visibility and enabled flags.
*/
@Override
protected void onConfigure() {
super.onConfigure();
// Call business logic and properly set email address.
}